{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "tags": [
     "remove-cell"
    ]
   },
   "outputs": [],
   "source": [
    "# Reference: https://jupyterbook.org/interactive/hiding.html\n",
    "# Use {hide, remove}-{input, output, cell} tags to hiding content\n",
    "\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import pandas as pd\n",
    "import seaborn as sns\n",
    "%matplotlib inline\n",
    "import ipywidgets as widgets\n",
    "from ipywidgets import interact, interactive, fixed, interact_manual\n",
    "\n",
    "sns.set()\n",
    "sns.set_context('talk')\n",
    "np.set_printoptions(threshold=20, precision=2, suppress=True)\n",
    "pd.set_option('display.max_rows', 7)\n",
    "pd.set_option('display.max_columns', 8)\n",
    "pd.set_option('precision', 2)\n",
    "# This option stops scientific notation for pandas\n",
    "# pd.set_option('display.float_format', '{:.2f}'.format)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "tags": [
     "remove-cell"
    ]
   },
   "outputs": [],
   "source": [
    "def df_interact(df, nrows=7, ncols=7):\n",
    "    '''\n",
    "    Outputs sliders that show rows and columns of df\n",
    "    '''\n",
    "    def peek(row=0, col=0):\n",
    "        return df.iloc[row:row + nrows, col:col + ncols]\n",
    "\n",
    "    row_arg = (0, len(df), nrows) if len(df) > nrows else fixed(0)\n",
    "    col_arg = ((0, len(df.columns), ncols)\n",
    "               if len(df.columns) > ncols else fixed(0))\n",
    "    \n",
    "    interact(peek, row=row_arg, col=col_arg)\n",
    "    print('({} rows, {} columns) total'.format(df.shape[0], df.shape[1]))\n",
    "\n",
    "def display_df(df, rows=pd.options.display.max_rows,\n",
    "               cols=pd.options.display.max_columns):\n",
    "    with pd.option_context('display.max_rows', rows,\n",
    "                           'display.max_columns', cols):\n",
    "        display(df)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# PCA in Practice\n",
    "\n",
    "PCA is used to search for patterns in high-dimensional data. In this section, we discuss when PCA is most appropriate for analysis and introduce captured variance and scree plots. Then, we apply PCA to the legislator voting data and interpret the plot of its principal components."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## When is PCA appropriate?\n",
    "\n",
    "In Data 100, we primarily use PCA for exploratory data analysis: when we do not yet know what information the dataset captures or what we might use the data to predict. As a dimensionality reduction technique, PCA is useful primarily when our data contain many columns, **and** when we have reason to believe that the data are inherently low rank, that the patterns in the data can be summarized with a linear combination of columns.\n",
    "\n",
    "For example, the data table of legislator votes contains data for 41 bills: "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "tags": [
     "remove-input"
    ]
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>515</th>\n",
       "      <th>516</th>\n",
       "      <th>517</th>\n",
       "      <th>518</th>\n",
       "      <th>...</th>\n",
       "      <th>552</th>\n",
       "      <th>553</th>\n",
       "      <th>554</th>\n",
       "      <th>555</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>member</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A000055</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>A000367</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>A000369</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Y000062</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Y000065</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Z000017</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>441 rows × 41 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "         515  516  517  518  ...  552  553  554  555\n",
       "member                       ...                    \n",
       "A000055    1    0    0    0  ...    0    0    1    0\n",
       "A000367    0    0    0    0  ...    1    1    0    1\n",
       "A000369    1    1    0    0  ...    0    0    1    0\n",
       "...      ...  ...  ...  ...  ...  ...  ...  ...  ...\n",
       "Y000062    1    1    1    1  ...    1    1    1    1\n",
       "Y000065    0    0    0    0  ...    0    0    1    0\n",
       "Z000017    1    1    0    0  ...    0    0    1    0\n",
       "\n",
       "[441 rows x 41 columns]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.read_csv('vote_pivot.csv', index_col='member')\n",
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "41 columns is too many to visualize directly. However, we expect that most voting tends to fall within party lines. Perhaps 20 bills in the table are strongly supported by the Democratic party, so Republican legislators will vote against these bills while Democratic legislators will vote for these bills. This knowledge suggests that the voting patterns of legislators might be clustered – a few combinations of bills can reveal party affiliations. This domain knowledge suggests that PCA is appropriate."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Captured Variance and Scree Plots\n",
    "\n",
    "We use PCA to calculate low-dimensional approximations for high-dimensional data. How accurate are these approximations? To answer this question, we create **scree plots** using the singular values of the data which describe the **captured variance** of each principal component.\n",
    "\n",
    "Recall that SVD takes a data matrix $ \\mathbf{X} $ and produces the matrix factorization $\\mathbf{X} = \\mathbf{U} \\mathbf{\\Sigma} \\mathbf{V^\\top}$. We know that the matrix $ \\mathbf{V^\\top} $ contains the principal directions of $ \\mathbf{X} $ and that the product $ \\mathbf{U} \\mathbf{\\Sigma} $ contains the principal components. Now we examine the values in $ \\mathbf{\\Sigma} $.\n",
    "\n",
    "SVD requires that $ \\mathbf{\\Sigma} $ is a diagonal matrix with elements arranged from largest to smallest. The diagonal elements of $ \\mathbf{\\Sigma} $ are called the **singular values** of $ \\mathbf{X} $. Importantly, the relative magnitude of the singular values precisely represent the percent of variance captured by each principal component.\n",
    "\n",
    "As an example, we examine the singular values of the body measurement data in the `body_data` table."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "tags": [
     "remove-cell"
    ]
   },
   "outputs": [],
   "source": [
    "#http://jse.amstat.org/datasets/fat.txt\n",
    "body_data = pd.read_fwf(\"fat.dat.txt\", colspecs = [(9, 13), (17, 21), (23, 29), (35, 37),\n",
    "                                             (39, 45), (48, 53), (57, 61), (64, 69),\n",
    "                                             (73, 77), (80, 85), (88, 93), (96, 101),\n",
    "                                             (105, 109), (113, 117), (121, 125), (129, 133),\n",
    "                                             (137, 141), (145, 149)], \n",
    "                  \n",
    "                  \n",
    "                  header=None, names = [\"% brozek fat\", \"% siri fat\", \"density\", \"age\", \n",
    "                                       \"weight\", \"height\", \"adiposity\", \"fat free weight\",\n",
    "                                       \"neck\", \"chest\", \"abdomen\", \"hip\", \"thigh\",\n",
    "                                       \"knee\", \"ankle\", \"bicep\", \"forearm\",\n",
    "                                       \"wrist\"])\n",
    "body_data = body_data.drop(41) #drop the weird record"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>% brozek fat</th>\n",
       "      <th>% siri fat</th>\n",
       "      <th>density</th>\n",
       "      <th>age</th>\n",
       "      <th>...</th>\n",
       "      <th>ankle</th>\n",
       "      <th>bicep</th>\n",
       "      <th>forearm</th>\n",
       "      <th>wrist</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>12.6</td>\n",
       "      <td>12.3</td>\n",
       "      <td>1.07</td>\n",
       "      <td>23</td>\n",
       "      <td>...</td>\n",
       "      <td>21.9</td>\n",
       "      <td>32.0</td>\n",
       "      <td>27.4</td>\n",
       "      <td>17.1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>6.9</td>\n",
       "      <td>6.1</td>\n",
       "      <td>1.09</td>\n",
       "      <td>22</td>\n",
       "      <td>...</td>\n",
       "      <td>23.4</td>\n",
       "      <td>30.5</td>\n",
       "      <td>28.9</td>\n",
       "      <td>18.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>24.6</td>\n",
       "      <td>25.3</td>\n",
       "      <td>1.04</td>\n",
       "      <td>22</td>\n",
       "      <td>...</td>\n",
       "      <td>24.0</td>\n",
       "      <td>28.8</td>\n",
       "      <td>25.2</td>\n",
       "      <td>16.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>249</th>\n",
       "      <td>28.3</td>\n",
       "      <td>29.3</td>\n",
       "      <td>1.03</td>\n",
       "      <td>72</td>\n",
       "      <td>...</td>\n",
       "      <td>21.5</td>\n",
       "      <td>31.3</td>\n",
       "      <td>27.2</td>\n",
       "      <td>18.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>250</th>\n",
       "      <td>25.3</td>\n",
       "      <td>26.0</td>\n",
       "      <td>1.04</td>\n",
       "      <td>72</td>\n",
       "      <td>...</td>\n",
       "      <td>22.7</td>\n",
       "      <td>30.5</td>\n",
       "      <td>29.4</td>\n",
       "      <td>19.8</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>251</th>\n",
       "      <td>30.7</td>\n",
       "      <td>31.9</td>\n",
       "      <td>1.03</td>\n",
       "      <td>74</td>\n",
       "      <td>...</td>\n",
       "      <td>24.6</td>\n",
       "      <td>33.7</td>\n",
       "      <td>30.0</td>\n",
       "      <td>20.9</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>251 rows × 18 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     % brozek fat  % siri fat  density  age  ...  ankle  bicep  forearm  wrist\n",
       "0            12.6        12.3     1.07   23  ...   21.9   32.0     27.4   17.1\n",
       "1             6.9         6.1     1.09   22  ...   23.4   30.5     28.9   18.2\n",
       "2            24.6        25.3     1.04   22  ...   24.0   28.8     25.2   16.6\n",
       "..            ...         ...      ...  ...  ...    ...    ...      ...    ...\n",
       "249          28.3        29.3     1.03   72  ...   21.5   31.3     27.2   18.0\n",
       "250          25.3        26.0     1.04   72  ...   22.7   30.5     29.4   19.8\n",
       "251          30.7        31.9     1.03   74  ...   24.6   33.7     30.0   20.9\n",
       "\n",
       "[251 rows x 18 columns]"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "body_data"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "First, we center the data and apply SVD. We display the singular values in $ \\mathbf{\\Sigma} $ (recall that the `svd` function produces a one-dimensional array rather than a matrix)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([585.57, 261.06, 166.31,  57.14,  48.16,  39.79,  31.71,  28.91,\n",
       "        24.23,  22.23,  20.51,  18.96,  17.01,  15.73,   7.72,   4.3 ,\n",
       "         1.95,   0.04])"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from numpy.linalg import svd\n",
    "\n",
    "cntr_body = body_data - body_data.mean(axis=0)\n",
    "U, s, Vt = svd(cntr_body, full_matrices=False)\n",
    "s"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The original data has 18 columns, which result in 18 principal components (and 18 principal directions):"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(251, 18)"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pcs = U @ np.diag(s)\n",
    "pcs.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We often keep only the first two principal components to facilitate further visualization (e.g. scatter plot). How much information do we lose from this approximation? We can quantify this by squaring each element in $ \\mathbf{\\Sigma} $, then dividing by the sum so all the elements sum to 1."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.76, 0.15, 0.06, 0.01, 0.01, 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ,\n",
       "       0.  , 0.  , 0.  , 0.  , 0.  , 0.  , 0.  ])"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "(s**2) / sum(s**2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The values in this array contain the **captured variance** of each principal component. In this case, the first principal component captures 76% of the variance in the original data. If we keep the first two principal components, we retain 76% + 15% = 91% of the variance in the original data.\n",
    "\n",
    "A **scree plot** is a plot of the squared singular values and provides a visualization of the captured variance:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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1iqv2V59fD6QwMA4F1KB2z2Gce7/dm9oGYbhr2nwmEb2ewz/a3jqhYRx7pj4j3++Hb79vjYGPuf8Tt8eo94Dw/9i9fbXK6gfXJ062QGorKwOeELg8xo+N3BrYBsb+9nq19ZvZ4PXq/fYIOBBY3+84LlGYE29vwM41/f1/m59bfT/fV+4zzAuaE9jP3kjuX/B9qioCAyguvoS6+6a8XmhtT5S9L6mM+5qN6XVl3ePyIQEZ5OjoJAMIJfLBTQc6VRWVgbsF7lc9a/3XHDyJCzow1TbC6c+Dslp2L5rP4cPHw7YXlRUFLBfRETME5IBlJSURI8ePRqs+cnJyeG6667j2muvNallIiLiE5Kn4AAeeeQRFi5cSGxsLLfeeiuffPIJmzdvDlgXJCIi5gnZALr33nupqalh3bp1rF+/np49e7J06VJGjx5tdtNERIQQvhNCa9OdEIKb+rh9qJ/bXij18aXuhBCS14BERCT4aQTUTBfO8b8c/oXN6uk2oz5uH+rnthdKfWyxNFyPGbBfASQiImbQKTgRETGFAkhEREyhABIREVMogERExBQKIBERMYUCSERETKEAEhERUyiARETEFAogERExhQJIRERMoQASERFTKIBERMQUCqA29uGHH3LXXXcxcOBARo0axYYNG8xuUkhxu90MHDiQfv36BfxKTU01u2khYc+ePdx4440cO3YsYHtubi7jxo0jJSWFYcOGsW7dOpNaGBou1s+33357g/d2v379OHnypEktbV0h+42owWDz5s3MmzePiRMn8sMf/pCtW7fy+OOPEx0dzZ133ml280JCYWEh1dXVLF26lOuuu86/3WrVZ6srVVBQwPTp03G73QHb8/PzmTFjBqNGjeLRRx9l586dLFu2DMMwmDJlikmt7bgu1s+VlZUUFxczd+5cBg0aFLCvc+fO7dnENqMAakMvvPACo0aN4oknngDghz/8IaWlpfz2t79VALWSvXv3YrVaGTlyJDExMWY3JyS43W7effddVqxYQWRkZIP92dnZ9O/fn+XLlwMwZMgQ3G43q1evZsKECdjt9vZucod0qX7et28fhmEwfPhw+vTpY0IL254+JraR4uJiDh8+zB133BGwfeTIkRQUFFBcXGxSy0LLnj176NWrl8KnFe3cuZPnn3+eyZMnM2/evIB91dXV5OXlNfq+LisrIz8/vz2b2qE11c/gfW9HRUUFjOxDjQKojRQUFACQnJwcsD0pKQnwnjqSK7dv3z7sdjtTpkwhNTWVjIwMnnrqKSoqKsxuWofVp08ftm7dyi9+8QtsNlvAvuLiYmpra/W+bgVN9TN439tdunRhzpw5pKenk5qayuzZszl+/LgJrW0bCqA2Ul5eDoDT6QzY7nA4APQfZCvZu3cvhw8fZujQoaxZs4af//znfPjhh8ycORN92W/LdO3alYSEhEb36X3deprqZ/C+t0+cOMH111/P6tWrWbhwIX/729+YOHEiZ8+ebceWth1dA2ojvv/8Lvw+dN92XSRvHStXriQ2NpZ+/foBkJGRQUJCAo899hg7duwgKyvL5BaGlou9r330vm49Tz75JIZhkJKSAkB6ejp9+vThwQcf5M9//jP333+/yS28cgqgNuJyuYCGnwgrKysD9suVuXB2EMCtt94KeD9BKoBa18Xe177Hel+3noEDBzbYlpaWhsvlYu/evSa0qPXp40ob8Z0jP3z4cMD2oqKigP3SciUlJaxfv77BhA7f6Ym4uDgzmhXSevXqhc1ma/C+9j3W+7p1VFVV8d577zUIGsMwqK2tDZn3tgKojSQlJdGjRw8++uijgO05OTlcd911XHvttSa1LHRYLBaeeuop3nzzzYDtmzZtwmazkZaWZlLLQldUVBTp6enk5OQEXGP7+OOPcblcDBgwwMTWhY6oqCiWLl3KSy+9FLD9r3/9K2fPnm105N8R6RRcG3rkkUdYuHAhsbGx3HrrrXzyySds3ryZlStXmt20kBAfH8/48eP5wx/+gNPpJD09nZ07d7J69WrGjx/vn5klrWvmzJn87Gc/Y/bs2fz4xz/mq6++4rXXXmPu3LmaDt9KbDYbM2fO5LnnnmPx4sUMGzaM/fv38+KLLzJ8+HAyMzPNbmKrUAC1oXvvvZeamhrWrVvH+vXr6dmzJ0uXLmX06NFmNy1kPP744yQmJvLee++xZs0aEhMT+eUvf8nUqVPNblrIuvnmm3nxxRfJzs7mkUceITExkfnz5zN58mSzmxZSfvazn+F0OnnjjTdYv349sbGx/Od//iezZs0yu2mtxmJorqqIiJhA14BERMQUCiARETGFAkhEREyhABIREVMogERExBQKIBERMYUCSERETKEAEhERUyiARETEFP8fhKuQmKukFekAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(s**2);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Like the numeric values, the scree plot suggests that most of the variance in the data can be captured with 2-3 principal components. For PCA, this usually means that a scatter plot of the first two principal dimensions preserves useful patterns in the data and gives us more confidence in proceeding with PCA.\n",
    "\n",
    "In contrast, consider the scree plot below which we created from randomly generated data:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {
    "tags": [
     "remove-input"
    ]
   },
   "outputs": [
    {
     "data": {
      "image/png": "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+HjfTZWSk5Mhk8lQV1cXVO9/nJaWBo1GA6PRGDhE5tfW1gar1Ro4p5OWltajxuv1oqGhoc8a//tdX1NfX99jJFRbW9vr+SMiIhp5Awqg/fv3Y9u2bViwYAHee++9oM/RqFQq5ObmoqSkJOgP/qeffgqdTofJkycDAAoKCnDs2DG4XK6gGplMhmnTpgVqPv/8c3R0dARqSktLYbfbcc899wDwzYq7ePEiqqqqAjWVlZWoqqoKqjGbzTh58mSgpr29HWVlZYEaIiISV793RG1ra8Ps2bMRExODoqKiwAc9/ZKTk3H+/Hk89dRTmD9/Ph555BGcPn0au3fvRmFhIVauXAkAuHTpEh555BHcfffdWLp0KWpqarBr1y4sWrQIW7duBeALiYULFyIhIQHPPPMMOjo6sGPHDmRlZeHdd98FALhcLjz00ENwuVwoLCyEIAjYuXMntFot/vjHPwa2b8mSJbhw4QI2bNiA6OhovPXWW+jo6MCf/vQn6PX6QTeKd0Qd3djjkcE+h1449bi/O6L2G0AHDhzApk2bbri+qKgI3/3ud3HkyBEUFxejuroaRqMRixcvxrJly4Jqy8rKUFRUhIqKChgMBjz88MNYu3YtFIqv7zNx4cIFvPbaazh9+jQ0Gg3mzJmDjRs3Bp27aWxsxKuvvooTJ05AqVSioKAAmzdvDhwWBHxXVdi2bRuOHj2Krq4u5OTkYPPmzYHPLw0WA2h0Y49HBvsceuHU45sOIPJhAI1u7PHIYJ9DL5x63F8AcU4yERGJggFERESiYAAREZEoGEBERCQKBhAREYmCAURERKJgABERkSgYQEREJAoGEBERiYIBREREomAAERGRKBhAREQkCgYQERGJggFERESiYAAREZEoGEBERCQKBhAREYmCAURERKJgABERkSgYQEREJAoGEBERiYIBREREomAAERGRKBhAREQkCgYQERGJggFERESiYAAREZEoGEBERCQKBhAREYmCAURERKJgABERkSgYQEREJAoGEBERiYIBREREomAAERGRKBhAREQkCgYQERGJggFERESiYAAREZEoGEBERCQKBhAREYmCAURERKJgABERkSgYQEREJAoGEBERiYIBREREomAAERGRKBhAREQkCgYQERGJggFERESiYAAREZEoGEBERCQKBhAREYmCAURERKJgABERkSgYQEREJAoG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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "np.random.seed(42)\n",
    "rd = np.random.normal(loc=0, scale=10, size=(2500, 18))\n",
    "rd = rd - rd.mean(axis=0)\n",
    "U, s, Vt = svd(rd, full_matrices=False)\n",
    "plt.plot(s**2)\n",
    "plt.ylim(-10000, 300_000);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This plot says that *every* principal component captures a significant amount of variance. This sort of scree plot discourages the use of PCA; a two-dimensional approximation would likely lose useful patterns in the data."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Case Study: Legislator Votes"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we return to the legislator vote data, which contains the US House of Representative votes in September 2019. Our goal is to use PCA to reduce the data to two principal components, then use the scatter plot of the principal components to search for patterns in voting."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>515</th>\n",
       "      <th>516</th>\n",
       "      <th>517</th>\n",
       "      <th>518</th>\n",
       "      <th>...</th>\n",
       "      <th>552</th>\n",
       "      <th>553</th>\n",
       "      <th>554</th>\n",
       "      <th>555</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>member</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>A000055</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>A000367</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>A000369</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Y000062</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Y000065</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Z000017</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>441 rows × 41 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "         515  516  517  518  ...  552  553  554  555\n",
       "member                       ...                    \n",
       "A000055    1    0    0    0  ...    0    0    1    0\n",
       "A000367    0    0    0    0  ...    1    1    0    1\n",
       "A000369    1    1    0    0  ...    0    0    1    0\n",
       "...      ...  ...  ...  ...  ...  ...  ...  ...  ...\n",
       "Y000062    1    1    1    1  ...    1    1    1    1\n",
       "Y000065    0    0    0    0  ...    0    0    1    0\n",
       "Z000017    1    1    0    0  ...    0    0    1    0\n",
       "\n",
       "[441 rows x 41 columns]"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "First, we perform SVD and examine the scree plot."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "cntr_votes = df - df.mean(axis=0)\n",
    "U, s, Vt = svd(cntr_votes, full_matrices=False)\n",
    "plt.plot(s**2);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This plot suggests that a two-dimensional projection from PCA will capture much of the original data's variance. Indeed, we see that this projection captures 85% of the original variance:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.8 , 0.05, 0.02, ..., 0.  , 0.  , 0.  ])"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "s**2 / sum(s**2) # 0.8 + 0.05 = 0.85 captured variance from 2 PCs"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We compute the first two principal components, then use them to create a scatter plot."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "pcs = U @ np.diag(s)\n",
    "pc1 = pcs[:, 0]\n",
    "pc2 = pcs[:, 1]\n",
    "sns.scatterplot(pc1, pc2)\n",
    "plt.xlabel('PC1')\n",
    "plt.ylabel('PC2');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "How do we interpret this plot? First, we note that there are 441 points in the scatter plot, one for each legislator in the original dataset. The scatter plot reveals that there are roughly two clusters of legislators. Usefully, these clusters neatly capture party affiliations of the legislators!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZIAAAEdCAYAAAAmZOH3AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOydd5xV5Z3/389pt9/pM8wMvUgHQUBEbFixBVtiYqKmamKy2V/iJkazu26y6qbvpplks4mxxNhN7IaiIlgoAtJ7HRimz+2nPb8/LgwMc+9lgAEGc96vly9fnOfc5zx3zj3n8zzPtwkppcTDw8PDw+MoUU72ADw8PDw8Tm08IfHw8PDwOCY8IfHw8PDwOCY8IfHw8PDwOCY8IfHw8PDwOCY8IfHw8PDwOCZOOSFZs2YNo0ePZs+ePSd7KB4eHh4enGJCsnnzZm677TZs2z7ZQ/Hw8PDw2McpISS2bfPYY49x/fXXk8lkTvZwPDw8PDwO4pQQkiVLlvDjH/+Yz33uc9x5550nezgeHh4eHgehnewBdIchQ4Ywe/ZsysrKePbZZ4+pLyklp2JSGCGy/z8Vx/6PgHd/ejfe/Tk2hACx/4+Yg1NCSMrLy3u0P9t2erS/E4GmqcCpOfZ/BLz707vx7s+xoetqwfZTYmvLw8PDw6P3ckqsSHoSKaGtLXWyh3HEFBUFgFNz7P8IePend+Pdn2OjrCxMgZ0tb0Xi4eHh0dswDAiF9JM9jG7zD7ci8fDw8DhSFEXgVyxU4YKUmMJHxur56xSFNYSZwIk34yRjFJfVgKaTFj7S6Z6/Xk/hCYmHh4dHAXyqg55upHXeY6R2rEYxAoTHXUDR5CuJO34cx+2R60T9Lk7DFvY+/zOcWHPH8cCQCVRc/mVEwEcq1TvdzrytLQ8PD4886JpAadzI7j/eRWrrCnBs3FSM9vf+xp5HvktY7bxM0HWFkJohrGUIaA6KUsCwcAiKlWLPn7/XSUQAUps+oOHFX+Jzeu+S5JRbkVx77bVce+21J3sYHh4e/wD4RYb6Vx4Euq4E7La9xFfMxRg7E9uBsGaSXLOAxqWv4WYS+GuHU3zOJzD9pWTswnP24hC0zX8J6eTeL0ttWYG00oCvB75Vz+OtSDw8PDzykYnjxFvzNsdXzEN304Q1k4an76dlzkPYLbtxk+0kNyyi7o/fQmnYgK51Xpn4fBrhsA/D2DeXN1Okd64tPJT6rUSjnpB4eHh4nFD8uiSqZyBWj0i2ENSsI9pukk7hBLHSzqBoGqmNSzD3bMlxgkvji78kILLbUqGQQrGRQW/ZjLX2LYy2rRQbGVANVH+44LXUQLjH7DE9zSm3teXh4eHRHaI+m9h7f6Vx6WtI2wTA13cE5VfcQUKN4jiHN1wroWKEZnR8/lACgyeA6xBf9lrePtxUDDfeQri4FiVWT90T93eyg2hFFfT5xD0UnX1d1g6Taxz+EHpZX1oTx8FVrAfwViQeHh4fOYKaTeu8h2l//4VOIpDZuZbdj9zTxUieD1PqRKd+LGeb0AyKpl2H60qkWbg/10qjOUl2P3pvF2O63dbA7sf+Hb20D4EhE3NcSKHiyq+CZnRrzCcDb0VyCqJpCi7ZKH1NEViWlz/Iw+NgNGmSWDk/Z5ubbCexaj7GqEswrcJbRWlLED79UhRVp/Xd55GZJAB6RX/Kr7yDtBJGERL/wHFYzbtzdyIUfBX9SG5YjJuO5zzFSbSR2bGWiqu+SnrrCtoWv4qbiuGrHkLRtGtQfBFak93fkjvReEJyiiE0lXU7W3n9ve3Yrsv0cbVMHF6BImWv3T/18DiRqKpCZs8mcnla7Se5/n2KRpwLHH6WHzc1fKMvoWbMeUgrg1BVXKGTxo9tuwghiJ55NfEV83JugYXHXQC677DG9PTOtQgjgFZaS+U13wABQjVIuyqplENxWCAzKYSq4+gBYrHc220nA09ITiESaZv7/7SIDTsOeJF8sK6BypIA93/5bDRF4LoHHh5dVxEie8zLeurxj4NEOcw2kNAMEN3f2c/YkMEH+KDjUcpO3KSEtAjR56bv0fC3/8Fu2bcyUTQip19I9OwbkIqBFi4teA01UgpCoBg+nFgTmd2bUENF+PqOwKeatL39Cpm6DajBKNFJl1NcVktrpndsd3lCcorgSslLC7Z0EpH97G1J8dvnP+Qr14wFJLoKQdUktWU5VsN2jMoBhAaOI+noWE7vXR57ePQEjiMxqgYhVD1vXEb49IuxMNgvBseKaQORWqpu+h7CSuJmUij+INJ1UKRDIpEmPO58Whc+k7sDoRAeeTYA9c/8CLM+6wFWNO0aFH+YPU/cBwd5kCXXLyI85lxKLvh0rxATT0hOEZJpm5cX5nAv3MeSNfU4s8bi1yR62w52PfGfnZbZQvdTdeN3IVzriYnHR56Mq1Ey4zM0//0PXdqMPoPx9RtFu3nsIqLrCkFSSDOB3dAIkTLMlt20vv00Zv1WANRIGX1u/C4iEKb0wptpnvNwl37KLv08Ugj2HiQiANHxF7LrT3d3EpH9xFe+RXjs+URrR9LefnJLkHtCcoKIRv20Jy2kBImkKGgQi3U/5YEEYsn8rn+uBNtx8asmdYeICIC00tT/5fvUfunntDm9M6jJw6OnSNsKwdPOprK0hrb5fyGzezNqKEpk4mWExl1I3DYoZEPpDoahEnDasi//vds6jusV/am4/DYaX/09Zv0WnFgTzW/+mfKLP0doxFkET5tMbNlc0jtWo5dUU3TmVUgkMhXD3LP5QP/VQ7DaGnCT7XnH0LboRcor+nOyX+WekJwAhK6xemsLqzY3UlkSwtAVwgGdQbVFaNiY3bCZCSGoKQ9R15jI2e43VIJ+ndT6BXl93qWVIbVlGfqgaZ6nl8dHnqSlopWdRsmsb6FrWXtI0tFpNyXHKiIAQZGk7rF7cdobOx23GrZT/+xPqPzY19nz5ANUXfNNrOY69jz5AE6sGaOiH8XnfJzopMtA0Whb/CrpTUsomnxFp360SGnBqHoAN9EGjsXJfpV7cSTHGaGrfLB+L0G/jivhr/M38eScDazY1ER7wsQV3fsBhP0an7xkeN72mdMGoqsC66AZTS7M+i1HFNnr4XEqY9suCdtA+iJIXwTT6pnsuYahkanb1EVE9uPEmrGad1M56xu0L3mVpr//EathO246TnrHGvb8+T+ILZ9HYtXbqLpB5ax/Rg2XdOojvXszRuWAwuPoMwSEIBA4ubVLvBXJcUZK6F8V4YE/vU9T24GtrB31MeYu3s4DX5lOZbGf9vbDb3NNGF7J9TOG8uy8jRzknMX08bV87Jwh2JaDVt6vYB96eb9Onl0eHh5Hjq6rJLYsL3iO1VKPGikluXFJzvbW+U9Sc8t91D38XcymXZRecBM1t9yPdGyEopLcuBjFH8RXM4xM3YauHSgqRVOuwE0nIBTpia911HhCchwpKvKzcVc7L769pZOI7KctbvLHF1bx1RvGd6u/gKFyxVkDuWzqQFZtbsJyXMYMLsPQFFzLxgWiI6bSMu9RcHPkCFI1AkPPoN3b1vLwOCaklKihooLn+KqHEF/xRoFOXNK71lN96wPowSKa5vyJxJp3s8+uohEaORVUncprvsHeZ39MZvemjo8KX5DKj32ddN1GAgNGk0qd3NQpnpAcR4QQhAM673xYl/ecJWvrsR2JIrKrl8MhHRcFmDC0DADHcZEHBSJmXB+V1/0Le5/5IbgHCYaiUXX9XaSlZ2j3+OghhEDbZwc5Efa/ZNKkaMy5tM5/Mu85Rnlf4tZhvKmkRI+Ws+cv3++c9NG1Sax6GyvWTNWsb1J+5R3g2GTqt6AGizAq+hFbOR+9pA/ofjjJsYmekBxHkskUuqZiF0gO50rIWA5Rv4ZpFs40ejC2ndt1MeMIfBWnUXv7r0iuXYi1dxt61UCCI84i7RqYtmcf8fjoIASENAuRjpHasByhG0QHT8ASBin7+L7eXMVH8fQbaH37qS5tRWddg9XWgH/QuLxbWwD+viMwG7bnzhwMmNtX46ZjKEaA9qWv4cRasNsbkY5FyfmfQi+rpTW3/80JxROS44hpgqoJqstD7M7jbVVW5CeWNAn71B67bsYWZPBjjLoY/+jsSqfd9LazPD5aCAER3aLpxZ+T3vrhwS1Ep15NeNJVxM3j94qLWTrR0y8hMGg8re88h928G62kD8VnzUIrrc4GRlYOoG3hcziJrt5Xvr7DUYMRYu/MLXid9iWvEr3gFqJnXg0He2QGi2ltTVNSEkBRFKSUNDcne/prdgvPa+s4EzIEn75sRN726y4YSnsiw/FwpDJNh0zGwfRExOMjiE91aZv/+CEiAiBpf/ev2DtXo+s9N0E7FCGyD21qxxr8fYdTNPVqAgPHYDbtwpGCmGUQs330+fT38dUMPeiDCsHhU6i4/Ms46QRCKyx2imbgutCaVGg1/R3/ScekxJchufJNml77X2Lvv0ixnqLYd+LtJd6KpAcIBHTSpoui7lMDITAUSKUskkmb0YPK+PzVo3n01bVk9r3UDU3hmvOHEg4YDK4p9l72JwAhQKgKjhSYloOhqyhIcCWyOwYqj16FISwaVr6Vt711wVOU3zBiXyqUniesmzQ++8OcHlWhUasIn38rSVsjoUYpmfVtVGkhMwkUw0dm1waSmz4gs3sTRWdeSfuil/NfZ8y5JNOdxaEoquE27WTXX+4jOHAsoeFnInSD+Mq30Cv6U1w9lNbMiXMJ9oTkGFENjea4STJjs3BFHe0Jk2H9Sjj9tAqCfh07bSFch7PGVjNyYCmNbWmkKykrDvDeyt3UVITQhMSTkeOLEAI0hUdeWcubH+zMOjgogqmj+/CFj41BcV3PLfoUQ1qZnKlD9mM17kIpsOeiawq6TCOQ2IqfzBHEmKiqgtO0M7dbLpBY/TZF0z+OENkCWqbuw4dEBIpwkfgHnY40kzTPeZjSC24iOPxMkuve69JPcORZKMEodqazTVSkEzS+9BuqP34XifWLaZr7CDKTxN9vJP7a05Cujd/vI50+MRnBPSE5BgxDJWk5vLl0F0/OWd9xfM6iHURDBt+/7SyqSwPE4ya6KiiNZD2m6hoSZEybK6YNREHi5DGce/QcUhH88E+LWbu9peOY60oWfribHXvjfO+LUzt7uXn0eoRmAIJ8UepqpBQ3x6OlKIKwZpJcu5CWD+chHZvAsMkUTbyUhBso6ByzH12VxFfMKXhOauMitJGX4BcZ0psW0/DuX7HbG9BLayg++3p8/UdRcsGnaJ7/JKUzPo2vegjtS17DiTWhRsuJTrwEX5/BSCuDovg6JjolJQHSm1ZTftkXaXjx11hNuzqumdy4hOSmD6i67k4CA8aQ7n4WpmPCE5JjwEWhvjneSUT2054weeBPi7jvy2cjoKNWSHnYoDKa/VG4jttDuUc9CqEogsZYppOIHMyO+hhb98QYXNV7a2L/I6DrCj6ZQhESiYKJQabAdr+NRmDweFKbl+Vsj06+kozwc2iG34iWof7P/96pEJXVuJP40tfoc8sDJNXibpXhPay/vivxiwyts39Pcu27B67VsJ2G539KZPKVFE2eScix2fPn72NU9qf8ks+hBCK4qRixFfNoefMvhEZMJXrRF5GKju4ksHZtR9oWyS3LOonIgXG5NL76O2pv/QFwYtz9PSE5Blwkryzcmrd9T1OS1liGyqiOtW/Z7LrylNhCEQI0LWuotG2nWzEuvRVNU3l/1Z6C57z1wS5Ou3KkJyQniYhhk964iIaFz2K3NyB8QSKnX0R08lXEbSPnM5N2dUovu436x/4du21vpzb/oPEER02n/ZAtIZ8O7YtezFnN0M0kaXr51xRffSdJCtsXLEcQGnM+idUL8p4TGH4mMt7USUQOJrboRYomXYqbSWK37cVu20tyw+Iu5yXWvU/JuTfiJFrZ+eT9GFWDKb/kcwVjWJx4K04qBqonJL0e23GpP4y73d7mJNVl5VhW76lmdlhUhZTp8N6KnbgSpoysIuTXEK57igqKxDiM945P9xwYTxYBzSb27nPEFr/UcUxmkrS/9zfS21ZRfv1dxMyuL3bXlSREiKrP3Edmx2qSaxcgVIPwhEtQiquJ5XD9NTBpXjY771gyO9ehYcNhhMRxXLSKgRhVAzvSxR9M8LQpCH+E2Ht/LdhPYt37hIZNKnhOtlKiSv3TP0SaaTI7VqP4grjdqBNvBOhWUthjxROSY8Cnq1SXh9i0qy3vOVVlIVKmzakSBqjoKg+9tJo3lh5YMj/y8hqmjKriK9eNR1rdD5rsLViWw7Sx1Tz6av5SpxdP6e9lRD5J6NJk7+LcXkvmnk3Y9ZvRKkbmDMJ1HJd2R0ernUCo73gQgrQNbh7DuSC78ihEthhW4LDjTjgGFTfcTfuCp4l/+AbSNlH8ISJnzCQ88TIyjoJrHeZln0mDHkArquyyqgIQqk7Z5bfjWhkqP/Z1zL3baF/6OundGwkMGps/BYuqoUXLiZ+g+as3DTsGVCTXzRiWt722IoyqgCJODRnRNIU3l+3qJCL7eX91PS+8vRlVO35++ccLKbN5yi6e0j9n+5TRVZREfafEluNHDU1TSG9dQaG07vHls9FFYZG3bZe0BWmz8NaxI0XnmI5DUHxBhNa97SDXlcQsg+DZn6Lv7T+n75d/Re0XfkLgjKtoz2g4LgRHTCvYR3DoGaTwU3rpF7q0acVVVH/me9jNu9nz+Pepf/YnpLatpPzy2zH3bKFoypUINffKKTrhEsjTdjzwhOQYSKdtSiM+vjhrDIdqRWnUz123TMJ2JNopsh6xJDz3xqa87a+8sxX71NzbQjouN106nK/dMJ7qshAAFcUBvvixMXzl2vEIzzZykhBIWfhvL12nx+J8MvgoPu+mvO3RM6/eV5u9ewRVG1m/jvqn/oudD97Bzv/9Bsn3nqHIMHFdiVE9DK24KudnfTXDIFyGabrI8iFUfepejKqB2UZFo+q6f6Hhbz+ndcHTOPEWpJUmtXkZe/7ynxgV/UhsWErV9d9CL63u6FNoBtEzr6Z42jW0pk7cpE/If7BILNeVNDXFj+gzgYDAclUylosASiI6bW3ZZGyGoZKwHFwX3l+1h6a2NKOHlFEeDbBmWxPTxtYgnGM3VhcVZZfabW2pY+uoAK6i8IX78+8fA/z2rgvRe6Ao0MlC0xQsF4QikFKiC4FtH/uW1om4Px9FhIAIMXb99mt5zyn/2D/j1J5xTPfp4PsT0GycrUtpnv1HpLnvfika0cmXE558dU7bSi58mou74e2c5Xz1sloqP3kvCccgpKRofvk3pLYsByQIhdCIqRRfeCsxy4fPp+Jzk5gN21GEQA1FUUIlxJfPoeXNx3NeWw0VU3HVV2l56wmKzrwao2oA0jJRAhGEZtCSzE5ew2GNePzYt6PLysIF6xh5NpLDoPk0WhI2T81ezeqtzQT9GpecOYCzxlbj11ySSQe/oZK2XPqUhVAUwY49MYrDPqaOqUaRLqfKjokiIOjXSKZz//B0TUFTBXTHNbKXYtvZyQBudr/81LP4HB2aJgiIDJgJpG2jhIowXZ30SU7imc3Yq1N57Z3EVswltWkZHLRC0Uqq8fUb3aO54lK2hm/gFGq+dDp2az04NlppDabUiZnd36TxCYu6eY/mbLOadpHevBQx8CziToDozK9Sio20MwjdjyU1UlIj6rOQqSZ2P/59nPgB9/R+d/ya+Idv5r22k2gFITAbdyJtE6EHMJUQttTxKQrFRgJpZ7B31RONlKL4w9hGqEdEJReekBQgENDYsCvGf/z+XZyD1OC3z33IvCU7ufvWyYCLYzoENIXRg0sZRSlSShTANp1Tat9dFYKZZw3kmXkbc7afP7EvqhBe7Msphk9zUZu3Uv/SL3FizcC+LZApVxGeOPO4JjbMh6oqhNUMibULaVz9NgChEWdRMv0GGl78FVbz7uys/YKbSTjHXl/9UDI2ZDAQof4Ikd84nw9FEViNO/KWtQaIL59D8YCJJF2dpKuRfd36wcp+/6DVTKZ+M22LXuokIgDStnEPk4JeKCp9v/gTAJpn/xE3naBk5m2opkLDX39OesfqjnP10moqr72TaKSS9kTPO5V4QlKAlCX577980ElE9rN+ewvvrtzNxZP70taWwQVa2zO89PZmmtszjBhYyvkT+6Kp8pSJTXBshyunD2LVlibWbu38wx5YHeVTlw5H9sA2kMeJQ1EERqaFuif+s9NMX9ombQufAUXBP/4K0icwz58QgpCSZPfD3+1UqjZTtwGtqILqT38PV6hYUiNmq8c1D5qUssu2s6oq6Gr2oOWI/M/vvvQsRp9BFE26Aq0kawtx0/FshHoqRtb1XOAjjXBsUFUsDFRh0fD0T6iYeTvm7q52SbNhO4GBY4l/+EbOSwtVRy+tpnn+08SX/b3jeLmiUv/UA11ckq3m3ex+9N+p/cJPOB5Bip6Q5EFVoSmeoblACdzX39vOpBFVGIbGSwu38sTsAxHui9bU8+Ts9Xz/9mnZSPZTREywXb796Unsakzw9/e3I6XkgjP6MbBPBOGcOtt0Hll8ik3Lm3/uJCIH0/7eC9SMv4j0CYqABvCpDq3zHs1Z79xua6D5zccJnnsraVuhp1cihVAUQUgzcRq2dbzAw+MuQC3vT9wyOgma60r0ygGEx5xLePQ5NL/xWMfLWyuqoHj69WhFVaiagrniNfa8/zfcVDyb+fe0KZRdeDOKEcBJteccS/PcR+hz4z0k1izMueqJTLoMJ53sLCLXfxsn1pQzrgWyApdYs5DiMy6htbVnZw6ekOTB51NINhXeT0ykLCTQ2J7uJCL7yVgO3/+/d/n5N89nf1ZGw1BhnxfXkRSyOlFIKcF26FcW5AtXjgKZdad0bOcUNrH/46Jhk96+Om+7tNJIMwnixAmJISwa8kR7A9mX3Xk3nVBxEwLCmknD0/d3KjKVWP02RvVQKq77Nu2HBEXaip/oGZdR98i/dSptbbc10PjSg9R89ge0L3iK2NLXDnxIuiTXvUtm90aqrvkGXdw99/fRWk9i7ftU33QvDS/9GqtxZ3acup/opJlEJ1/O7j/fC4CvdjgVV34FNVJGbMmrBb9nettKQmPOBXrWo+uUEJIXX3yRBx98kB07dlBbW8ttt93GrFmzjus1k8l9xnNB3ln4qIGl+A2VR1/J7zIbS1rs3BtnQGUYy4W3ltfhIqgpDzG4NgquxM2TtFHXVYQQOM6RbScJIVBUBVdKVEVgH0WgneO4p8yWnEd+JKAYfhwzvzeZUPVD01EdX1yn04u3C45NzmyLxxGfJml/55mclQrN3Rtpf+95fJOvJ7PPOcGng4ZJ8/wnc38XVQMksaWv57ye095IevtqtLIa/APH5qipAi1vPErwi/9Dnxu/i7QtpGNlI9pVPzhppJkhMulyiqdeTWz5XIQRQA1ECn5PxR/qGFtP0uvjSF555RXuvPNOzj77bH71q18xZcoUvv3tb/Pqq4WVtydQFcF5E/rmbNNUwQ0XnYbApbGtcPTq3pYUiYzDM3PXM/60ShJpi1cWbuUvf99AW9JCHBLkJ1QFWwjmLavjufmb2d6QJJ7q3lJUqAptaZuHX13Lz55YxrNvbcYiKywe/3hYwkd43Iy87XppNa5yfOp15EMqGmqkNG+7Gi1HihP7ezUwiS/PX6kwvnwOPmGiqoIiPYO5+Fnctr2ktqzI3V9ZLZm6jRR6YSc3LcVu3Uvp+Z9Crzg0WFZQfO4ncYwwraafNjdCuyil3faj4CBdh+obv0toyATs9kZ8VQNJrHmXwKBxoORfbUTPuBS7h1cjcAqsSH76058yc+ZM7r77bgDOOecc2tra+J//+R8uu+yy43ptadnccuUoEPDmB7s6PLBKo37+3ycnEA5o2C70r4qwanNT3n4G9ImwcnMjZ4+v5Z9/9ibWQSuQV9/ZymdmjmTGxFqk4yJUhTeW7eLhl9d0GAGfmbeR6rIQ/3n7NFRF5PcEUxVmL97BY6+t6zi0YmMjL8zfzN23TmZwdQR5Crvuehw5GYtsevQ1C7BbDklcqWqUXfFV0nTNkHs8SeOn6OzraX71dznbi8++nrQIHPOYDENFwcXtznzZdQp6YEkzDdIlrKTY/ae7cOKthIZOBKHktD9J6SIOJ4ZCQag6e5/9KWWXfh6kS3rnOtRgEcERU7Hw4SIIqWkkCpYSIKDaYGdo+OvPyew68JxrxVVUXPFlnGQ7ZRd/lqbXft/lcuGx56JGKmg9Di7A6r333ntvj/faQ+zYsYNf/OIX3HHHHQwbdiAViZSSxx9/nFmzZlFUVHREfUoJqVT3E9BIx2XCyCquOHsQU0b34crpg7jqnMHUlAVJpyykENRUhJm9aHvOoMPaijCXTxtEZWmIe36zoKNC4sGs2NjIRVP6Ew5o7GlN8+PHlnY5J56yWLuthWnjaxA5LiQEJDIOP3hkSc7v/N7KPVwxfXD+fTqPY8Lvz+6fZzK9z+5lo1E6/txsLEFbA0LVCJ52JpWzvoHpL+NEp09zXUmwohpV08jsWn8gHbuiUTTtWvyjziVtHX18i091CCkp0iteI7P6DZRkM76SSlA1MmZucTJUl8S+fFm5UIJRohMupXXBM2T22Zy0SClqqAircUfX75hOUHLOx4ktm0O+VUnxuZ/AP3QKgUFjMXdvBiNAePS5UDEEW6pomRba33iY2MJnyWxahD8cxiguY88T92Pu2dzlesn17xMecy56SR8i42bgJNuQrotR2Z/Siz9LeOz5tJpHt/oMBo2O0sK56NUrks2bs3+sQYMGdTo+YMAAALZs2UK/fv2OqE8hDkS5Hglpy6FfZQjXyXp3qKqCamgk0jZ+Q+Wumyfz40cXYx602uhTFuTuWydj6AqrNjflDfQDeOHtzdx02QiezGG038/67S2YtosiBD5DJeTXOvJ4SSl58sX8RtWM5bB2WwtTR1edohl8ezf7U+4fzW/rxOAncubVhE+fgZCA5kNqPgJ0Jz3h8SF65iyiZ1yW9TISAqNyAGh+pObjqP+MdobMpg/Y9befs/8Fnli9gJa3Hqf6xn+lqM9QULq+9oQ0iE65gta3nsjZbdGUK1F0g8SqA6V9Y8vnUHX9t0luXoY8NBGklKDqFE+7ltYFT07VP74AACAASURBVB+4ju4nNGIqRuUAgkPPwNUCaJWD0auGAFlXZN21Mbd8SN2zP+n4DrQ30L74JfSSSqyGrsIF2WSUqS0rSO9aB0Kh5LwbUTQfQtMhWIKUUOTv9l+y89/nMLreq4UkFosBEA6HOx0PhbK5kuLxI0t1cjRIoD1h8bf5m5i3ZAcZ02H8sAo+dekI5izazqotTQysLmJIbZSf/b/z2LyrjbrGBINqolSXh2iJZfAbKnuaCmccbWhJEU9a7Goo/J027WrjD39bhe243HjxaZw7oS8BQ8V2JI2thdNzZNvzV5Tz+GgjUcAX7TV3X2o+0HzoA8Zn/90DfYpMnIaDRKQDx2bPk/fT9/ZfIv3RrmMRKpEJl2Lu3U5y7Tud2oKjphE5/SKkayMPKgfhJNpofuPPVN94D23vvUBi/SJwHfwDxlB64c0okXIik69AL62mZf6TBIdMIDzmHOKrF5Lashy7bS/RM2YigkVI7cAbXphJGl78ZZfv4O8/mvT2VQW/f6ZuA0ZZX9re+xupDYspu/QLBMZdeNwf+V4tJPv9tg9dUu0/rhQqyJy3z+7nQ1JVFUfAt345n8bWAwb191btYfGaer5/21mMHVrGuyv3sLsxyYDqDDUVYUYOLGFva4r3Vu3hokn90TRB/z6FvSkG1RYRS5pUlgQLik5JxEciZZGxHH73/EqSGZtpY2oI+jUmnFbJotX1eT87pLaI9vbUKRVtf6rg5drqiqYpBEiDsy9CW/ORlv5ONsKexDBU7GWzyffWlFaG1LZVOH0n5kxJDwrRGZ+j+JwbSW1cBEIQGDoJVwvRklQIag7+fiM7RYynt62k/ukfETn9QqpvugKtqBLTVUhKAyfuAAK9/2SqPj0Oq24tdQ//a4dNJbV5Ge2LX6Fs5m0og6aQtlUUReBr2Z61yRyCm4pjlNUU/Bso/lBHRLxWUk3otCkkUjaW5R5TYGdZWbjgqqRXu/JEItmX76Erj0Qi0an9eKHqCs+/uamTiOzHcSW/fGo5tiOZs2gHL7y9mXseXMjf39uGUBRKwn5mTOyLtG2k7VBTEaayJPd6XVMFl00dwJ9eWs2lUwfkHc+APhGa2tJkDnLnfWbuRtqTJt/7w3tMHduHiuLca9fKkgDVZUFPRDxOCH7NQW9Yw95H76Hut1+j7rdfo/7hu1DrlhPQjk92BAUXO0flw4Oxm+sKJh9M2DpxpQgx6lLEyEuIiyISdna+nZE+SmZ8Bg7J5u0kWrO2k73bSUo/SVvvVKrXslyEdNn7/H/nNMw3vfJbDDf7jhFC4GYSOccWX/kWgYHjcm7N7Sc8ejqpLcuITLyU6pvuxWypx172N0LWXsK6ddgtqqOlVwvJftvI9u3bOx3ftm1bp/bjRcZyeWPpzrztdY0JSqOdX9yvvruNbbvbsR03G8+hCCzLJejL2lEqijuLic9Q+dZnJmHoKuu2tZCxHC47a2CXa5VEfHzl+vFdbCipjI1pOeyoj/Hrp5bzH1+aRijQOXCqT1mQ79827Tg4/Xl4dEXTFJTWnex96gHs9oaO406smYbnfwJ7N6AfpmLl0eBIBb2q8DtBrxp42HrsUmaLoVlW56zdjuNihyqpvOGuTu7Lii9IyYW3Ygw9E/OQnF0+XRD1u6Q2LcnGz+QhvvINDEPDcVx8+b6Da5PasZrySz+fszky4WL08n5U3/Q9iqdfz96Xf4c0U0THz0ALRpCJJiLGP2DSxgEDBtC3b19effVVLr744o7jr7/+OgMHDqSmpvAy71gIh300xjKdZv+5yPWjfGbeRm64aBj//cRS7rn1TFRV4pg2FcUB/vXzZ1LXEGfrnhjlRX7GDCknYKi4jsu0cTX86qnl3HrlKO778jQWrthNImUxclApA6uj/O/zK9m5t6sNRVWzLsFL1u3ly7rKL75xPtvrY+xtSTKwOkp5kR8VvABDjxOCjwzNcx/K294y92HKb7wXi56NX7Esh+joc2h9+8mOPFgHowTCGH2GkraO/jlI2yp6xUiqbv4vsFLgOghfmAwGiYNCvbJJKVPElr5GJhlD6IW/q9Najy6y43I0P4HBp5PavKzLebElr1Nx9deo+ewPaFv4HGbjDtRIKUVTrkSLlrPjd/9M7S33g6pROfPztL3/Ms2zH0JoOuFxFxAeOY1wSCOe6FlB6dVCAnDHHXfwne98h6KiIs4//3zmzp3LK6+8ws9+9rPjel1FESQSJuOGlLNoTW67Q8if+89X35wgEjC46+YprN7SzKhBpSDBylgUBzQiA0oYPbgM15EI6WKbNkLA568eTVsiw//9bRXhgM4ZI6s4fVg5Gcvh2798O+e1SiI+LMvtSCzZFs9QHNAYVBVicJ8writxHRcv1aLHiULFyRkhvh+ruQ5F2tDDQgLZGJWqG+5m79P/1cmVV/GHqf7UvSRdH8dqebZsd58IGtk9nUNihYVgX7zJd3BizRh9BhGdeGnBPo3a4bhudt8paeuUXn4HLX//P5Lr3usYr1ZcRcXV/0TzvEewW+spOfdG1FARrpmmbdHLpDYsyv4Ndq7HqOhL3V/uO1BvBWie/RCxpa9TfdO96LqB1YPptnq9kFx77bWYpskf/vAHnnrqKfr168cPfvADLr/88uN63UQiTSRkMOv8ISxdtzdnBuCPnTeEOYu7uuJVl4X5cFMjj726lns+OwXICpPryg4j38H1wVVNwZGCdNrmazdMACHZuL0V15WMHFSKEIInZ2/okkBSCLjlilG8uODAQxsO6iDlvpWSZw/xOAkIkTdQr9M5xwHTFlAyiNrbf0F660qsljqMqsH4+56G9IWx2wqnZu8JfBq0vftcR8p+c88W9LJalEAENxXrcr7Q/QSGTqZ93ztBSohZOpELv0DJhbdgtzeh+kPgC2GrBkgXs34r9U/9V87rGxV9afr7HzuJyH6s5jraFr1IdOosWq2es2z0eiEBuPHGG7nxxhtP6DUdBwxdZf22Fu66ZTJ/eGEVuxuzRrCQX2PWeUOpKg3y+Ovrunx25rSBPP76Oizb5b4/vs9v7roQw1BJ54gjUXSVFxds5YW3N5PeF6w4rF8xX//EBIqDGqbpoKoKP/6nc3h67gbmLt5BxnIYObCU62cM48NNjSzet2Ia3r8ETQi8QBGPk4klNQJDJpDa2DU4FsDfbxQ2x6+euOkITMeH1n8y2kCB7Uqk78QlgNQxaTwk/XvzvEepuu5O9j7/M5x4a8dxxR+m6sbvknI7r86khKSdrWEiQv2yHlcW+FWN0MhpJNcvynt9NVSUMzX9fmIr3iA66XLgKINKcnBKCMnJwqc6nH9GP15asJlbrxhFccSH40h8hkpp1M89Dy7o8s6edd4Q4kmTHfXZmYdlu7z74W4untyPQ+vxCVXhqbkbeWlB522ADTta+dYv5/OLb56PIGvbKCoKcMvlI7l+xjDaEyartzTzxxdXd1ynNOrnG5+aiIL0Ck95nFQyrkbphbdQt311l1mx0AxKL/0CSalzvFfMuV18jz9C0CneBCCzcx3N8x6j4qqv4abi2IlWtJIa9IoBJKWBXcBkcbDbrmYnoKgCvawWq2kXii9IYOhEFCOA1bgLJRhGmoVXXW460eOTTU9ICpDJgC+gMHPaIFw3G/AXCRkoAhpaU9zz2SnsaUqybP1eAj6dSaOqWL6+gd882zmR2/b6rstZABfBK+9szdmWTNu8snArV589qKNWtaYqYDtEgzojBpSwpa6N/lURzhzTh7GDy1DkqVNEy+Oji+tKklqUms//mNb5T5DclzI+OGwSxed+kpQSPqzn1KmM7YpsvMkhwYOZXevZ8/j3MaoHU3nDPcQtndQRGv4VIUntWk+fj99NZs9m1HAxibXv4ibbCY89l8DAcTiZOMLw54xFAfDVDOvxrUVPSA6DY5moQuf9tXUM719KMm3SFrfYtqeN0YPLqS4PUV0+CFdKXl6whVfe2dpF7PtVRbq84BVFsH1vvGBcx/ur67ls6oCuPtqOS2lI5+bLhmevJcG2Hc+g7tFrsG2IiTDBc2+l6LxPZ4+xr+LhR1hEYF+8yQWfZvef7ibXqis8+jxSjnZ0kz5FRQ1GsOMt6GU1uOkERnlf2pe+RnzVfJRglD6fuIficz5By5w/5eyiZPp1oBnQ/ZSDh8UTksNg2xAISKaOrmb+sl289cEuLprSj/KiAA889D6xZNb1IeDTuOb8IXz1htP5xZMH3PZ0TeGsMdWkcqSB1/XCxi5dV7IzB0VwqOnDdSVujgSQHh69BSklaVsh3ck766MtItA53qTpld901GMXRoDis6/DN2I6cfPo/g5CCPTy/rS9/yKJNe+Aa+OrHkLJ9BtI122k7Z3n2Pv8f9Pn43fhtNbT/sHsjnopii9IyYzPoFcMIGGp9OS9EPJ4FkTuhbiupKnp6HJ0hUI+UqbNtvo4//67d3Ke87mrRrN6SzPvrtyNrinc89kpDOoTwckVj6Kp3PGjeaTyZIy95YpRrNjYQCJl86VZY6itCJNKHH+vE48jx0uR0rvpqfujqgpyX9XQw6FrAr9Ig5lCujZKIEpGGmQOmVPquooiJAgF07Tzmi8URRBV4ux66Du4ya4leiuuvIP42ndIbVxKzed+iBouAdvCbNierfFeUgWGn7QMkE4fme9vWVm4YEaAXh3Z3ttIJDI4ruThl/Jn2X3+zU1cP2MYX/zYGH5714X5RQRQpOS2a8bmbOtXFWHkwFKWrW9g/fYWvvWL+WzfE0PTsrdMVRVQFVxFoGhqwRTPHh4eR48QENRsokoCvX4FvpYNRHUTn1pYTCxbErN8xEQxcbWcdrOziOgaFOkZ2Dif1LzfYS1+hoiI5U0h49Mkbe+/lFNEAJrf+DNFk2YC2QqMux/5V1refwm99jSM/qOw/KW0prQjFpHu4G1tdRNFEbhCIBF84WNjaI1leHnhVtZsbeKssTVMHlWFrils2tlGcdhgxsRaUimroN3CdVzGDynjgS+fzcOvrGH99hbCQZ0LzujH2eNq+NGjiztmJ66E3zy3gn/97BSEprJ5T4zn3txIa3uGIX2LuO6CYYR8KjLHvqumqTj7OtIU0SmGxcPDozARw6bl77/vcBoAELqPssu+RKDf6aTsI0/3oqngSzew69F/6+TZ1vbOc5RcdCuB06aTsju/nlU3Q2LNgrx9OvEWhOYDoaAVVeIk2ogvfgktGEEdO7NL+paexBOSbqCqgoQl+f1fV/DB+gakhJryEB+/6DS+cv045izawWOvriVt2owZXI5pu2ha91YI0nGpKQ3wLzdNBCHYtKuNhSvquPvBBV2ypG6pa0ciePjlNZ1ygG2vj/Hm0p38y2cmMbJfEa6zPzuyQKoKyzc1MXfxDlwJ50+s5fRhFSjS/Uh7znh49AQBzaHtzcc6iQhkMwk3vvAL+tzyAEqg5oiToQaUDPVP/GfOoMGW2Q9RM3AcQi1DSomiCPyKibqvxG5BpItROQCh+5BmiuCIqYTGX0R75vg+656N5DAIAbZQ+PpP38hZmOr2a8by4aYmFqyo6zimqYLv3TaNoTUR4vEjqMaoKnz+vtl52/uUBfn6JybwnV/nnpX4DJUHvzUDbCfr3aeq/Nv/vtsRa7KfbNnes1BceUyppT0O4NlIejdHe3+ieoZdD34lb8LFwKDxRGd+bV/wYPdQFIG/fQv1f7437znhcTMInHMzpiMIq2maXvwFvuohOLFm4qvm5+7XH6bqhm+jGAEcK4PiC+Hq4Y7sxceCZyM5RhRV4Zl5G/JWN/zz6+u6ZOu1HckvnlhGLH1kW0gCGDekPG/7zLMG8sL8zXnbM6bDpp2tqKqCoqo8NXdDFxEB2N2U4OFX1iBUz67i4VEINxUrmLU3s3sT6hE63iuKwG7NXzcIwG7dg3BtgqpJw9MPkN62ktjyuUQnzUTouaP0S879OIo/hBIqwS7qT1wpJmFrFAclxUaaYj1JsZ6mKNLzOc48ITkMlgvvfJi/xkF7wkRR6KLWu5sSmEdoi1CRfO7q0Wg5XvBCwMQRlbQnC69w2hNmdhUlZc48YPtZsLwOb2fLw6MwilE4jYgajHCkJX5cV6KX1RY8R6/oD6oOieZsKWKyotay4Gn6fPw7+PoOPzCGSCnll99OYPAEpC9Cu6mRyTgYhkaJz6R1/hPs/N0/s+NXX6Hu4btJLn+dEn/PGtw9G8lhOJY5u2m5+Izua7XjSIoCOj/86jn89vkPWbct638+qCbKl2aNpaIowNjB5azc1JS3j6H9inEciRSCTIE4E9vJJnb0fgAeHvlxFQO9ol/eOumRSZdjKgE4guBC15Uo0Uq0aEWnei0HEEQnXU4aBWtHZw/R1Mal2C31RCdfTtmMm0HVUMIlWEqIuOngmC7740MCJNnzxH2Ye7d1fN6JNdM8+yGsxp0UT7+BVrNncpB5K5LDoCmCaWOr87YXhQ0ct6tfuc9QiQSPPDGddF3KwgbfvukMfn/3Rfzvdy7kXz87heH9i9E1hQsn98Nn5PYSGdavmEhAR0qJEFCep1oiQDRkoHpbWx4eBUlJPxVX/zPCF+zS5us7gsDws7D2pTlRFIHPp+LzqQXtCQBJ10fljd9FDRd3blBUyq/+OqaaLQGh+LtWgbWadtH06v9S9/A9tC9+hYz0kUxZnSLlIxEfmZ3rOonIwcSWzclZs+Vo8Sakh8F1HK69YBhvLasjkSM6/ZOXjODVhVu7HL9q+iAMTcW0j9zVdv8PokPlHdnhBqwJuP/2adz/p0U0tR3IpTN6cBnf/NREFNfFBXQhuGHGaTx4SN6v/cw6bwi6IjiK4Xl4/MPgOC4pXxm1X/gpseVzSG9aijACRCZehl47nJipZ+uPaCZu2x4S+7L+Bseej1rUh7ht5HRocRxJUi2mz60/xNyzGXPXOtRoOcGhk0i7GmlbAVyiA8eAoua100QmXkYyhx6odpLWlW8W+GaS5OYPiI69iPb23Dm5jgRPSA6DlKArkp/80zn83wurWLKmHldC38owt145iqrSIM/M3dBxvk9XuWL6IK6aPhgz3YPJbPbhOi7lER8//Op02uImrfEMfcpC+DUlKyL7Vka27XDmqCrqGofwwvxNHfu4QsAlZw5gxhl9sb14Eg+Pw2Lb0IYfY/yVFI+9GCkULAzS+7aRooZF4/M/IbNzbcdnYsvn4Os7nPJZd9Ju5t6ZcBxJu2OgVoxC6zMGKSVthzyTGalTevHnaX7td10+Hxp7PjJcjpsrPkRy+Ay/Peix6bn/dhNFEUghcPf1oSoCXREYhkYiY5NM25i2Q3HYh64pWD0cPZrLfVGIbO6dQj7sQlVwJKze0oyUklGDSlEVcUR7uh6Hx3P/7Xk0TUWI7KrgSOM0DuV43R+fDuaiZ2h//4Wc7dEpV2FMvq5LWpQjIaA5qMkG2hY8jbl3e7a07tRrUPsMIW7mXgtEo37MdQtoeOEXefvte/vPaXOj3RrD4dx/vRVJN8n+kCUCUAEcieUcqHQY1ARBTQPbwTpB+0VSctg4EOm4KMCEoWXouoLjSCzL8WqWePRafJqDT1ikNy/HSbUT6D8KJVJBwvEds6D0ND4yJNr2UnnNN1FDRTiJNmIr5pHa9AEgiS2bTc3kK8lw9EbtlK2i+KsJX/xlFGkjhYKJj5SZ/ylub09TMnAsemkNVnNdl/bQqOnZKPge2jTxhKQH0H0amX1R6Iaq4No2bi94UyuKyAqNqlLfmmbukh04ruT8CbX0KQuB43oBiR69ioDmYG96h12v/6FTqV69vB+Vn7iHOIFeJSaKIgjUDKN57iPYbXvRiiqJTryE6BmXsvfZn2Qj1w8Xjd4NXFeSclX2TWOhG1PBtBKiz6f+jeZ5j5FY+w44Noo/TPSMy4iecSkt6Z6rUultbR0DmqFgOYJn39jIghV1uK7kjBFV3HjxaQR0pUdtEN1dmquqwEGQNh1a4xmqy8P8/MkP+GBdZzfD0/oV851bp4CdP9uoR/fxtraOHUURBNO72f3QXTnbfX1HUHL1N0nYR/4CPB73J6RZxN54iMTqrpkmQsOnEhhyOs1zH6HP539KzDpxpX4PRtchpNrg2kjHRqgaGH5aj/AV6G1tHScURZCx4c6fv0nbQWlQ5i3ZwcIP6/jhV8+hNKSf0ASJqqqQdiT/9fD7bKlr57yJfakoDnQREYD1O1p5cvY6PnHhMORJKknqkRtVVTpytVnW0dsHVFVBFzYCF1sYHW6qvRWfYtO24Om87Zmda1GdNBzHeu/dRQiByLTnFBGAxLp3iZxxKdGpszDxc7LqsFgWWIqCLsm6AkuJUT2EgGYcVbLJfHhCcpQIVeHRF1d3EpH9ZEyHB59dzrc+PemEjskRgu/8+m2a97nzXTCxLz99fGne8+cs2sH1M4YdU9ClR8+hKIKQmsFp3kVi1VsIRSU0bgYiUkHC1ru9chQiO1t2m3cQW/IKrpkmMGQi0RHTSEo/tt07l6CKtDEbdxY8x25vRCmKnvTtLcNQSSx7q+A5yY1LKDr7BloTJ2+sxT6L9iWvsOfdvx7YYhMK0UkziUy9llimZ8TEE5KjxJGwYEX+1Clrt7bguJKe0/zCaJrCym3NHSIC2aDI9kR+a5ppu9iO7AXzOw8hIKKZ7H3qAcz6LR3HY8tm4x80nrIrv0Z7pnuPa0S3aX7516Q2f9BxLL31Q9oWPkOfz9xHUi05ujKvxxkpFLRIGXbLnrznqKHiky4i+5F24SJz0rFJOypwdIF/2QBHDdXJ4Do2jtK1KFYhwn5Jcv0i2hY+e8jAXNoXvYQWLccYMaNH0st7ke1HiQTswzyMJ/JhVVSFJWv2djqWytgUh/PvzfoMFU31fgK9AZ/m0vrWnzuJyH7SW5aTWDEHQz/82lHTFNKbl3QSkf24qTiNf/0ZAdE7q2xmpI/oWbPytutltUgjdAJHlB/LcgiOmFbwnOCIaZhHUQ5bUQQR3SKUrsP+8FXMDQvRMq2IXcuJain0bs5ONSdN2zvP521vfec5/PTMb8F7ixwlQkqG9SvO215W5Efv7h3vifEA0UNEY+6SHVw6dUDez1w8uT9elpTegYGVNz04QPuil/B146H3kaZ90Yt52836rShu7xQSx3FRywcRPv3iLm1KIEzFtf9CShZOoniicF2JWlyNUTUoZ7tRNQi1pPqIV0+KIohoaRqfvo+6h75D89xHaHrt9+x66G6ceAuJVW/hNxs7KqXmQ9MUpG1it+3Ne46bbEe4PRPv5gnJUWKoCrdcMSpv+40XDydwmJvdk5imzUWT+3U69s6K3YweXMbkkVVdzh8zuIzrZwzD9XKk9A4cq2DuIzfZjuiGy6eCxIm3FjzHzfRez7K4pRE+++NUf/ZHRMZfRHD4FEovu42az/+UlN67tuQSjkHlDXcTGjU9m8YEQFEJjZpO5Q3fIWEfebr2gGLS+Nf/7sj424Fr0zz7IfzVQ2me8xB+Cqc1ydrTBEIrMAahgOrZSE4qpmlTWx7i2zdP4nfPfUhLLDvLCwV0PnnJcCaNrDwutZHzISUEDZVrzhvCc29uAsBxJfc/9D5fumYsH7/oNN5btQfXlZw9rprSqB9p91zSNo9jRNURmoG0c9u01HAJUh5++eigYlQOIL1tZe4ThIIajMCJ+2keMQlLR/FV4jvnZoR0saVC20FZbXsDqqrgExmkdCmZ8RlKLrwZ1zIRqoaFQbulHFWMluqkSe9Yk7e9felr+GuHo7gmkF8kHMcFn5/w6OnEls/NeU5w+BTsYwiUPBhPSI4BaTuMHVTCj//pXFKmjetIwkEdXRFY5ol/SUvH5epzBjNheCVPz91AfXOSmvIQ1WUhKor9zJqeXYbbtuOtRHoZpjQIj59BbMmrOdujZ36MtAhwuEC0jNQpPvdG9jzy3ZztoRFTMWXvd69wXUnG3P8i7j2rEAC/5qDG62iZ8ycyu9aBohEaMZXi8z5J0g1gH2Whn2zBq1xp5Q9gNuwgesalCFVDyMLpskxHpejMq0nvWIPV3NkxSI2WU3bhzbRZCj0h0F5AYi9GVZWOIKBgMDv76E5AlaoqOBzICaYgvfrsx5meCHiL+mya/vbfXVYTwZHTKL7wc8Ty5FU6lKBmY216j+bZf+y0XeYfNI6yK75GzOq+K/FHhZ4KSDQMFa1hHfVP3MehL2AlEKb6sz8i5gSO6u8rBITtZur+7xt5z/H3H0108uVkdq4lNO5CHD1M0tYwDAVFurhCwTwodUrE76KYCZL/v737Do+iWh84/p3Z3ZTdJKRBCJ3Qa6iBGFBB1AuCcFFAsKAXVJAiCIIFK3IRBUEFBKT3IgpcEEEF1B8CCkhAgShSQhFSgGTTts7vj8hiSKGk7Ia8n+fJAzszO/NuNtk3Z8457zm2j4y4PWiaE1O9tvg1jCHN6XvD89yuNyFREokHUlUFTVU5ed7Mtr2nURToFFWNGhUDcFjtUtbEAxXFB9WV+R9kXCIjbjeKqsdYPxqnl/9Nr7vto3firdrIOvM7mjUD78r1cHqZyLiJ+Si3k8K+Pz56B16KDWxZXFg5IZ8FqcCv2b34xvQjy3Zro1j89FYSV7yB/VLeUwvKPziclN3rXeuMlO/+PN6V62E+uB174mn05avi16QDFsUHiz27j9ZgUPHV2VEcVlDArhrJsDhv6udAEsk1PD2RKAqg0zF+wU8cP5uSY1+daoG82j8Kp036NjxNUZbgUFUFvV4HZBfYLMxvqE6nuirolq3f9JwK8/6YDA6yfv2Gyz+sJvzRN/lryWv5Hqt6G6k4cBpm262ti67TKRhtFzm/dBzOrPQc+/wa34mxVgsS1k8DwD+yIz5VG5C46ZMcdclQVMr/ezRaWH0sjqIZ8HO9RCKjtjyMqlNZ/e3vuZIIwB/xl1n3/TF0RTgaTFGUHLfQhPs5nRpWqx2rtXBJBLITiN1etpNIYej1Ko7zcVz+bkX2zPDrVdt2OihMn4PDoZFpCKbSwKkE3/sfjLVbxlRXhgAAIABJREFU4tfkbir2eRWf6o1I3Dgj+0BVh3/ze0n8clbOJJIdBInrpuCtFv16SPmRznYPY9cUtu3Nv0zElt3xPNiuVqGvc6Uf5VKalb+S0ykfZCS0nA86NBxSe0sIIHtezsUfVrkeaw4bqjEAZ0Zqnscba7fEXshaEXaHRorDC0Pdu/Gr2x6D9TLnV47HYb7oOsa3RhMyj8fmX1nY6SAjbg+Geh1LpN5fqUokkyZN4siRIyxcuNDdoRQbh9OJpYA3PtNix6EVrvSKXq+SYXPy9rw9nEu62nwuH+jLuP+0IchkkNUThQB0KlgT4l2Pzb98TVDMwyR/PT/XsYrei3J3PkK6I/u2ZGHZbE5sKBhUfY4kAqAzlsOemlTg8+3JZ/EuoTsNpebW1tKlS5k/P/ebd7vRqQom3/z/oinn50VhfzbsKLzyyY85kghA4uVMXvlkJ5k2J4qUThECzamhM5VzPU4/uhvQCPnX0+gCQl3bvSvVpuLjE7Do/Iu8FphD5413pTo5ttlTEzGEVC7weV7htUusLpnHf1pcuHCBUaNGMWHCBPz9/d0dTrEzKNA1Ju+yCwDd76yFoRCZRKdTOXEuNUdxx39Kz7Tx0+Hz6PQlV95FCE9lUXzwb9k5x7bkrxeQcWwfof96mkpPTqTKczMJ6jGWTJ8wrPaibwFkOr0J7fEC+sCrFSqy4o/gU7U+iiHvkjGKwQffiMgSW8bC4xPJ1KlTOXz4MAsWLKBBgwbuDqfY2e1OOkfXILpJeK59dzavTMeWVQp120mnUzl8IrnAY/48k8LZxLTr1vMR4nZntWmYIu/Bu1LdHNszj+0n6ctZKL4BmJ0m0u2GYivf4nRqpGsmKjw6nrBHXiegTXeCOjyK6hdExX6vo3gbcxyveBup2O8NMhwlt5iWxw//PXbsGBEREaiqyuOPP45OpytUH4mmaSW62NStyrDYMWdktw4URaFNwzD8TV74FLIQpKIofLX7FHPWHcr3mO53RtC4Vigt61WQOSs3SP93C84uFQM8UmHfH8WahuXcH5j3b0WzWzE1iMZUNwrNJ6DER8QpSnarR9M00JwoljQsZ+OwJp3GK7Qq3pXroXn7ZdfSKiIGg8513by4rbPdbrezadOmfPeHhoYSExND7dq1SzAqz2H01mP01vNguwgguyUBhf+g0jSNto0rMnf9IfK7fRrdpBLK38cKIUDz8sO7ZnO8qzRE05woXj44NaXYy38p1nQ0Swa2S3+hMwag8w9G8/L/e8IZoKhoPgF4126Nd+0oQHPLUG+3JRKLxcKYMWPy3R8VFUVMTEyRX1fTSue62kU54U3RqQx5uBkfrzmQa1/vTnU5duYSdzSuVCq/T+4ia7Z7tiJ/fzIKrr5bWNnl5C0krp9G1unDru06/2Aq9HwRi7EiNkfJzf0KCfGjgAaJ+xKJyWQiLi7OXZcv0zSHk5b1yvPRqLv5fPsxziamERZspFPraiSlZBJZu3z2fBJ3BypEGWXUWUn8/H0s5/7Isd1hvsj55W9S+ekPScEz1maBUjaPRBQdp91BoK+eJ7s2ID3TTqbFjrdBR9UwP/RS5FEIt1EUICs1VxK5QrNZMMd+i1ezrkWyTG5RkGE5ZZjd7sRpdWDUq5T398bPS0VxOCWJCOFGOp2K9XzuJZf/yXL6N3TOkiuBcj2SSASappX5on5CeApNI3vxsQKoPn5oqufcUJJEIoQQHsThcGIIq5nvZEMA/9ZdsRZRZd+icN1IDh06xIABA2jevDmtW7fm2WefZe/evXkeu2HDhmKdNLhkyZLbus6WEEIAZDkMhD44PM+5IKZGd6IGhpdY+ZMbUWDbKDY2lsceewyj0UhMTAyXLl3i+++/54cffuCZZ55hxIgRJRWnEEKUGVaHgk9YfSoN/IDU3euwnP8TnSmQgKgH0ZWvSZrNc25rwXUSybRp0wgLC2PVqlWEhIQAcPToUcaOHcvs2bNJTk5m/PjxJRKoEEKUJVl2FYsahG/7/pg0K5qiw6p54bB53jIPBd7aOnDgAP369XMlEYD69euzYsUKWrduzWeffcabb75Z3DEKIUSZpGkaWXaFDIc3mXZ9sdXzKqwCE4mmaeh0uWs7GY1G5syZQ7NmzVi1ahWTJk0qtgDLIr1eRdNlf6HTSSVeIUoJb4OCUWfFqLNiMHhOZ3hxK/DWVsOGDVm7di19+/bFyyvnGsQ+Pj7MmTOHxx9/nIULF6JpGvXq1SvWYMsCRa/y+9lUlmw+wqnzZry9dHRsWZXeneoSYCzcymtCiOKh1ymY1EzMv2wl9dg+FJ0eU2QnAmq3Is3uVWDHuKpmL3etaRr2Uro6aYHVf690qoeHh9OlSxf69+9P+fLlcxxz8eJF/vOf/xAXF4e/vz9ms5kjR44Ue+C3yunUSE5Oc3cYeVJ1KruPXGDW57kr84YFG3lvaDscVrsbIhPXI7W2PFtxvj86nYrRfpHzi1/BacnIsc8QWpUKj7xOqjX3H4E6nYpRzcJx+TzWv46h8w/Bp2oDMh16jxraC9m1ttQC1kEqMNr27duzaNEiAgICmD9/PpmZud+E4OBgli1bRrdu3UhNzXsdY3FjnIrCwo2H89x34WIG3x84i6GQZeSFEEXLR7GQvGlGriQCYEs6Tdr+r/C+Jo/odComzCQse40Ly17n0rbFJK2fytlZQ9ElxuGjL10tk+umvaioKNatW8fu3bupUqVKnseYTCbee+89Nm3axBtvvFHkQZYFqqpwPjmdLGv+pRK37T2NVcqXCOFRdNjzrYsFYD7wNV6aJcc2o5pFwqoJ2C9fyLFds1tJWPs+Xo70Aqvtepobbj8FBASgqirnzp1j8uTJpKSkuPbNmTOHSZMmERgYyCOPPFIsgZYFjutMMHI4NFkjRAgPo9ltBe53ZqblWBRKURS09IvYLp7L54ROUvdtxsuzpooU6KZuxP3+++/8+9//ZsGCBfz111+u7ampqSxbtowePXpw+vTpIg+yLHA6NSqX90Ovy/8tuaNpOF76UvRnihBlgGLwRvHKv5yJd6Xa2LWrv7c6nYI18UyB57RdOIGqlZ7+0JvKeVOmTMFkMrFq1Spq1Kjh2j569Gj69OlD//79mTx5Mh9++GFRx1miNE0jPT0Fm82G01ly9yoVFZ7rVpUT51Jy7TPodbSK8OLC+b/yeKZwB1VVUFUdvr4mwNfd4Qg3seJNQKsupPz4eZ77A+96FIvmDWR/ljidGl7lQgs8py4gFE0pPf2hN5VIDhw4wHPPPZcjiVxRtWpVHnvsMebOnVtUsbmFpmlcvpyExZKBXm9AKcE3U3NC1fJ+VAw2YrXaXdV4dXoVXy89Up7XszgcDqxWC5mZadjtmYSFVXR3SMINsmzg36ILzqx0zL98nf2LDChePgR3+g9aYBUc/xjW63Rq6IMqofr648w053nOgNZdyXCoFPtavkXkphKJpmlYLJYC92dlFe8SlMUtPT0FiyUDf/8gTKYA9wShZOcMTcte5EYhuzkMyFohHkbTnKSlpWI2p2I0GgFvd4ck3MBs1ePbtjcB0f/GlnQGRW9AHxSOxWEg0577dnSG5kVY71c4v+wNNHvOdUXKxfTCaQzBaS89v+s3lUgiIyNZtWoVjzzyCAEBOT9k09PTWbNmDZGRkUUaYEmz2Wzo9Qb3JREALTt5lKZRG2WVoqj4+ZXDYskgPT0dk0kSSVmVadeRiQ41qA4ATmv+icBuB4uxIpWf/Yj0337AcuYoOv9g/Ft0xuEdQIa9FPW0c50Jide6Ug04KCiIbt26Ub16dRRFIT4+nk2bNpGYmMjixYtp3rx5ccZcKNebkJicnD0cLyQkrKRCuiHSIvFsly5dQK/X4e9f8L1v4R6ePGHUYFDRYUdDh9WOR47MvN6ExJtukSxYsIBJkyYxf/78HC+4fv36TJw40aOTiBBCeBqbzYmN0tMfkpebbj+1atWKNWvWcPHiRc6ePYvD4aBSpUpUqFChOOITQgjh4W46kezdu5fJkydz8OBBV4tEp9PRtm1bxo4dS506dYo8SFE6aJqWY+KVEKJsuKlEsmfPHgYMGIDRaKRfv37UqFEDh8PByZMn+d///scjjzzCihUrqFu3bnHFKzzUzp0/sG3b17z22tvuDkUIUcJuKpFMmzaNypUrs2LFCoKDg3PsGzJkCL179+aDDz5g1qxZRRqk8HyrV6/A4Sg9M3GFEEXnpkqkHD16lL59++ZKIgChoaH069ePn3/+uciCE0II4fluqkUSEhJCcnJyvvstFgt+fn6FDkoUj4cf7kbnzl1JTU3hq682YTAYuPvuTgwdOgIfHx8cDgfLly9m69bNnD17FlVVqFOnHk8/PZgWLVoBMG/ebL79div33HMfa9euJiCgHCaTibi47DVo2rVrxdSpM3jnnddp3bot48a95bq+0+nkoYe60qnT/QwZ8rxbvgdCiKJ3Uy2SQYMGsXjxYrZt25ZrX2xsLIsXL2bIkCFFFpwoemvWrOT33+N47bXxPPHEAL76aiNvv/0aADNnfsjixfPp0eNhpkz5iDFjxpGScpnXX38pR8WCs2fPsHPn97z11gSeeeY5xo17iwYNGlK3bj1mzVpAw4aNuP/+Lnz33fYcz9u79ycSExPo3Llrib9uIUTxuelaWyEhIQwZMoSIiAhq1aqFwWDg9OnTHDp0CC8vLzZu3MjGjRtdz1EUhUWLFhV54OLW6PU6pkz5+O9yHtkL7Eyd+j7Hj/9JUlIizz47hIce6u063tvbi1dfHcOJE3/SoEEjILvG1NChI12tFACj0Q+Hw07jxk0AeOCB7ixfvoTvv9/Offd1BuCrrzZRv35DIiJqldTLFUKUgJtKJD/++CMA4eHhZGZm8uuvv7r2hYeHA3DmTMHlkYV7xcTc6UoiAHfddQ9Tp77PwYO/8NZbEwG4dOkS8fGnOHMmnp07fwCyS8f8U61atQu8TvXqNWjcuClbtmzmvvs6k5GRzvffb2fw4OFF/IqEEO52U4kkr1taonQJDS2f43FgYCAAZrOZo0cPM2XKuxw5chgfHx9q1oxwVbT9Z9UGnU5HuXKB171Wly7dmDLlXZKTk9i9+0ecTif33nt/0b0YIYRH8KwV5kWx++fKlgCXL18CwNvbh1GjhmE0+rFkyWq2bv2eTz9dzAMPPHjL1+rU6T4MBgPffbedbdu+ISbmTgICyhUqfiGE55FEUsbs2bMLu/3qfI/t279FURQaN25CSkoKffr0o2bNCFQ1+0dj9+7s25maVvACX7o8VnY0Gk3cffc9bNnyJb/8spcuXaSTXYjbUemqVSwK7fz5c7z66ov8+9+9OHXqBJ9++gldu3anWrUamEwmFi6ci6KAqurYsWMbmzatByAzs+CqqX5+/sTG/sK+fT9Tp0491zIDXbp0Y/jwQYSEhBIVFV3sr08IUfKkRVLG3HffvwgODuW118ayYsVS+vZ9nNGjX8bPz4+JE6fgdDoZN24s77zzBhcunGf69DkYjSYOHjxQ4Hn79HkUvV7P6NHD+fnn3a7tzZu3xGg0cf/9XdDpSs/SoUKIG3dT65HcDsryeiQPP9yNVq2ieOml14oqrOs6cGA/Q4c+w/Lla6lWrXqJXbekyXokns2T1yMpDYp0PRIhbtT+/Xv55Zd9bNq0gXbt7rytk4gQZZ3H39pKTExk3LhxdOjQgebNm9OzZ082b97s7rDEdVy+fJmVK5dSvnwFRo9+2d3hCCGKkUe3SKxWKwMHDsRsNjN8+HAqVKjAli1bGDFiBA6Hg65dZRTQzfjss/+V2LU6duxEx46dSux6Qgj38ehE8v3333P06FHWrFlD06ZNAYiJieHcuXN8+umnkkiEEMIDePStLZPJRJ8+fWjSpEmO7REREcTHx7spKiGEEP/k0S2S6OhooqNzzj2w2Wx89913sqSvEEJ4CLclErvdzqZNm/LdHxoaSkxMTK7tkydP5uTJk8yYMeOWrqsoV4cC5sVs1mG3O1zDbT1HdjwyFcNzqapS4M+WuHVK5uWrD3z80ZSb+0XQ67OPl/fn1ijX+Th0WyKxWCyMGTMm3/1RUVE5Eommabz//vssXLiQAQMG0KmTdOQKcbtTrWbS4/aQsnsD9ssX0PkFEtCyM/6R9+D09nd3eOJvpWJCotVq5aWXXmLTpk0MGDCgwAR0PWV5QqIoPjIhsegFeFlJ+WElabG5q4771GhCaNdhpFi9buhcMiGxcEr9hMS0tDSeffZZ9u/fzyuvvEL//v3dHZIQopipKii2zDyTCEDWyUM4Lp9HH1ADu73ggqKi+Hn0qC2Hw8HgwYOJjY3lgw8+kCQiikwpaIiXad7eBtLj9hR4jDn2W7y9PK0vs2zy6BbJypUr+emnn+jTpw/h4eEcOHC1cKCiKERGRroxutJn6NBnOHBgv+uxqqr4+vpSo0YE3br14IEHHkS5Xq/abeDXXw+yaNE83n//Q3eHIvKhKKDZbQUeozkcKPIHgUfw6ESyZcsWAFatWsWqVaty7NPpdBw+fNgdYZVqDRo05PnnXwSyW3ypqZf57rvtvPvueI4d+4MRI0a7OcLit3Hjek6cOO7uMEQBsrIcmOq25vL/rcn3GFODaKwOFZBbW+7m0Ylk8eLF7g6hSDidGoeOJ7Prt/OYM2z4Gw1EN6pIk4iQAjuwioPR6EfjxjkneLZvfzchIaEsW7aIDh3uITKyeYnGJMS1nE4nqjEQn2qNyIr/Ldd+Q0hlvCvV5rLFnsezRUnz6ERyO0hNtzJ1dSynLpizm+tadrP9pyMJVA/zZ2TvSAJMNzbypDj17/8fPvtsJRs2fE5kZHOcTidLly5k48b1JCYmEB5eiX79Hqdr1x6u5wwd+gw1akQQFBTE+vWfk5mZwR13tGPs2HGsXbuGtWtXkZmZQatWUYwZ86prnXeLJYslSxbyzTdbSUg4T6VKlenVqy/du/d0nVvTNFavXs769Z9z/vx5KlQI4+GHe/Pww48AMGHCmyQlJVKxYiW2bdtKzZq1+OSTeVy+fJl582axa9dOkpOT8PU10qJFS4YNe4GKFcOZMOFNNm/eCEC7dq145ZU36NKlWwl+p8WNMtu9KN99BJe/X0nar9+jOWygqBjrRhFy75OkOXyR1ohnkERSjJxOjamrY4lPMAPZSeSf/8YnmJm6OpbX+rcq8ZbJtYxGEw0aNOLgwVgAJk+eyObNG+nffwANGzbmp592M2nSBLKyslwf5gBbt26mUaPGjBv3FsePH2P69Gn88cfvhIaWZ+zYV4mPP8XMmR8RGlqekSPHoGkao0c/T1zcUQYOfJYaNSL48cf/Y/LkiVy6dJEnnxwIwMyZH7F69XL69XuCFi1acehQLB9+OAVV1dGzZy8gu1R9y5at+e9/J5OVlQXA6NHDychIZ/DgYQQHh/Dnn8f49NNPmDx5IpMnf8STTw7EbE7lyJHfmDBhMpUrVynh77S4UU4npNoM+N35KIHtHkaz21D0BhyKgVS7AadTkoinkERSjA4dT+bUBXO++zUNTl0w8+uJZJrWcv/8g+DgEA4f/o34+FP873/reO655+nb9zEAoqLa4nQ6mDt3Fl279sDHxwfIbjlMmPAeRqOJqKi2fPnl/zh//jxz5izCz8+P6Oh27Nu3l19/PQTArl07+eWXfYwf/y4dOnRyndtut7N48Xz+/e+HUVUdq1cvp0+ffjz77BAAWrduQ2JiAgcO7HclEofDwYsvvkJ4eCUAEhIuYDQaGTFiNE2aZA/EaNGiFWfPnmbjxuwlgytXrkJgYBAGg1euW3zC8zidkGZRAd/sL1f/u3SyexJJJMVo12/nXbez8qMosOu3Cx6RSK7Yv/9nNE0jJqY9dvvVe9Dt2t3F6tUrOHz4V1q0aAVAjRo1MRpNrmOCgkLw9vbGz8/Pta1cuXKcOnUCyF4x0WAwcNddHXNc8777/sW6dZ/x22+/oqoqDoeDO+/skOOYsWPH5Xjs62t0JRGAChXC+Pjj2Wiaxl9/nePMmXhOnTrJwYOx2GwFjwASQtw6SSTFyJxhKzCJQHaSSU23lkxA15GYmED58uVJSUkBoF+/h/I8LikpyfX/fyaRK7y9ffK9htmcSlBQMKqacwpTcHAIkD0B9cpfm0FBwQXGGxyce//WrZuZNWs6CQkXCAgoR5069VytJyFE8ZBEUoz8jYYbapF4Qmd7WloacXFH6dTpPldrYvr0OXl+CP+zFXCz/P39uXTpYvaonH8kk+Tk7OQUGBjoaj1cunQpRx/G2bNnSEi4kO+ostjYA7zzzhv06tWXRx55lPLlKwAwc+aH/PbboVuOWQhRMI+e2V7aRTeqeEMtkuhG7q/rtXTpQqxWC927P0RkZAsAUlNTqV+/oevrwoXzzJ07i8zMrFu+TrNmLf9eCiBn6Yuvv96CwWCgQYNGNGzYGL1ez86d3+c4ZvHi+Uyc+Hau1swVv/4ai9PpZMCAZ11JxOFw8PPPe3J0zOb3fCHErZEWSTFqEhFC9TB/4hPMeSYURYFqFfxpXDOkxGLKyEhzdXw7nQ4uX77MDz/sYPPmjTz6aH8aNWoMQKdO9zNx4tucO3eGunXrc+LEn8yePZN69epTsWLFW75+27Z30KxZC959dzyJiQnUrBnBrl07Wb9+Lf37D8DfP7ui60MP9WHFiiXo9XoiI5tz8OABNm/eyJgxr+Z77gYNGgEwdep7dO7cldTUFD7/fA3Hjv2BpmlYLFl4e/vg5+fPxYsX2bVrJ3Xq1CM0tGT6pxQFDAY9igJ2uxOHQ0YdiduDJJJipKoKI3tH5jmPRNOyk8jI3pElOvT3yJHDDBr0FJBdZsZk8qN+/QZMnDiZ9u3vdh03btxbLFo0j7Vr15CYeIHg4BC6dn2QgQMHFer6qqry3nvT+PTTT1i2bDFmcypVqlRl1KiX6NHjap/MkCHPExQUxIYNX7Bs2SIqV67Cyy+/TufO+S+v3KJFK154YSwrVy7l22+3EhQUTIsWrZgw4X1eeWU0sbEHiIpqS/fuPfnxx//j5ZdH8cwzz9Gv3xOFek03QvFykEUW35z6iTRrOi3Cm1CtXBVUq14qOotSr1SUkS9K7igj73Rq/HoimV2/XSA13UqAyYvoRmE0rnnjM9uljLxnK6iMvOrjZOOxr9n0+7c5toeZQnntrhHorN44nfK+FicpI184pb6M/O1AVRWa1gr1qCG+omTo9SrHU0/lSiIAF9KTmP7TQoa3HgAWWfpSlF7S6yhEMbKrVr44sjnf/UeTjuFQpF6UKN0kkQhRjDRF40JaYoHHpGSZr7smthCeTBKJEMVI0RTC/MoXeEyAt991h4kL4ckkkQhRjHQOL/7d4F/57q8XWgs9hhKMSIiiJ4lEiGLkcDipEVCNLnU65toXZgplWNRTKDYZ8yJKN/kJFqKYObNUuta6l0612vPDqT2kWTNoGd6EauUqo1oNOGTor0dSFAWDIXs0nc3moIzNlLgpkkiEKAGaVYePYqJL9fuuzmzPdOKQcugeR1HAqLehZKWS8euPoGmY6keDbyDpdoP0Z+VBEokQJUTTwGqVob6ezt9g5+KW2WT+sde1LeXHz/Gt2YzgrkNJtcjH5rWkj0QIIf7mZYD02K05ksgVmScOYN67EW8ZG5GLpNYyZOjQZzhwYH+ObYqi4OtrpGrVavTu3Zf77+9S4nHNmzebxYvn8913e274mKFDn0Gn0/PhhzNLKkxRBnhj4fzeL/Pdb96/lUotOmPBuwSj8nySSMqYBg0a8vzzL7oea5qThIQLrF69gvHjXycgIIDo6HZujPDGjBr1EorM4hNFTNGcODPzr8WnWTLA6SjBiEoHSSQlQHM6cZw5iO2PXWiZqSi+ARjqRKOr0hSlhNfGMBr98lyrvG3bO+jW7T6+/HJjqUgkNWtGuDsEcTtSVBRvY3bCyGu3wQdUHUguyUESSTFzZqaSufkDnEkn+Wcdefufe1BDa+Db+QVU3wB3h4mXlzd6vcH1V77T6WTp0oVs3LiexMQEwsMr0a/f43Tt2sP1nKFDn6FKlaqEhVVk7dpV2O0O2rSJZuTIMQQGBrqOufYW1P79exk+fBAzZswlMrKZa/v27d8wa9Z0EhMTadiwEUOGPO9aY+Ra157XZrOxcOFctm7dzMWLyVSpUpUnnvgP99xzH5C9wNXy5YvZunUzZ8+eRVUV6tSpx9NPD3atPz9v3my+/XYrzz03nDlzZnL6dDwVK4bz5JMD3XLLT5Q8C974t7iP1F3r8tzv1+werHJbKxfpbC9GmtP5dxI59fcGLce/zqRTZG7+AM1ZkgscadjtdteXxWLh1KmTTJjwJhkZ6a4PzMmTJ7Jgwad06dKNSZOmcscd7Zk0aQKffbYyx9l27NjGN99s4cUXX2HYsJHs3buHUaOG5ViR8EY4HA4mT55I376P8/bb/8VisTB8+GDXErzX89Zb41i1ahndu/dk0qSpREY25803X2Xnzh+A7OV2Fy+eT48eDzNlykeMGTOOlJTLvP76S2RlXV3xMTExgWnTJtO7dz/ee28a4eGVeOedNzh9Ov6mXo8onSw28G/VFZ9qDXPt865Ul4A2PciyuSEwDyctkmLkOHMwuyWSLw1n0kkcZw6hrxZZIjHt2/czd9/dNsc2RVGoVasO48e/S0xMe+LjT/G//63jueeep2/fxwCIimqL0+lg7txZdO3aw7WWu8WSxQcfTCcsLHvVxMDAIMaOHcnu3T9yxx03d4tszJhx3HVXBwCaNInk4Ye7sWrVcp57bniBzzt+/Bg7dnzLCy+MpWfPXgC0ahXF2bNn2b9/LzEx7UlKSuTZZ4fw0EO9Xc/z9vbi1VfHcOLEn66WT2ZmJpMmTXW1UqpWrc7DD3dl166dVK1a7aZejyidzFY9Qd1GoqUmkH5oO6BhbHw3unIVMdu8QOb+5CKJpBjZ/th19XZWfhQF2x+7SiyRNGjQiFGjxgLZf31/+uknOBwO3n5HvTCDAAAXYklEQVT7v1SrVgOA/ft/RtM0YmLaY7dfnffQrt1drF69gsOHf3V90DZt2syVRADuuKMdXl5exMb+clOJRK/X0779Xa7H5coF0qRJJEeO/Hbd5x48eACAO+/skGP7lCkfuf7/1lsTAbh06RLx8ac4cybe1Vqx2XL+idmkydX3okKF7LXfs7JkQaSyQtMgzWZANVXBu/2TgEaWzYnTpiFJJG+SSIqRlplacBIB0DS0rNSSCQgwGk3Ur5/dbK9fvyGNGjWhf/++jBw5lHnzlhIYGEhKSgoA/fo9lOc5kpKu3m66dr1zRVEIDAzCbL651xQYGIR6zcCDoKAgDh++fiK5Em9QUFC+xxw9epgpU97lyJHD+Pj4ULNmhCsB/vMt0ul0GAxXJwpcielmb9WJ0s/p1LBYZALpjZBEUowU34AbapEoPu7rbA8ODuGFF8bw2msvMW3a+7z55gT8/PwAmD59jusW1j+Fh1dy/f/Kh/gVmqZx6dJFgoKCgezE4rxmuGRmZu6/7tPSzGialmNIb3JysqvTviBX4r18+RIhIVcT2/Hjx8jMzKJGjRqMGjWM2rXrsWTJaqpXr4Gqquza9X/s2LHtuucXQhRMOtuLkaFO9A21SAx1oksmoHx06NCJNm3u4JtvtvDLL/uIjGwBQGpqKvXrN3R9XbhwnrlzZ5GZebVz+tChWMxms+vxzp3fY7PZaNmyNQAmk4mEhAs5rnflVtQ/ZWVlERv7i+txcnISBw/G0qxZy+vG37Rps7+v/UOO7R9+OIU5c2Zw6tRJUlJS6NOnHzVrRrhaGbt3/whkz6URQtw6aZEUI12VpqihNf4etZVXQlFQQ6ujq5J7XkdJe/75F3jiiZ+YNm0y8+cvpVOn+5k48W3OnTtD3br1OXHiT2bPnkm9evWpWPFqn0hGRgZjxjzPY489xcWLycya9TGtW7dx9aHccUd7/u//vufjj6cSE9OegwcP8NVXm3Jd32AwMGHCmwwaNAyDwcC8ebPx8/Ojd+++1429Tp163HVXBz7+eCqZmRnUqlWHH37YwS+/7GPKlI+pVq0GJpOJhQvnoiigqjp27NjGpk3rgbxbSEKIGyeJpBgpqopv5xfynEeCpqGGVse38wslPikxL9Wq1aBXr76sWLGEdes+Y9y4t1i0aB5r164hMfECwcEhdO36IAMHDsrxvObNW9K4cVPGj38NvV5Pp073M3jw1VFWDzzwIGfPnmHz5o188cVnNG/eknfemcTgwQNynCcwMIiBAwcxc+aHXLp0iWbNmjN+/LuuW2TX88YbE5g7dxYrVy4jNTWFGjUiePfdD2jdug0AEydOYebMjxg3bixGo4k6deoxffocRo9+noMHDxAdHVPI76AQZZeilbEi+06nRnJy/iUQkpOzb8OEhIQV2TWzZ7Yfyp7ZnpWK4nNlZnuTG04iOl1234HD4Tlvl9S7uurSpQvo9Tr8/UOvf7AoceXK+QKQkiKtz1sREuKHquZfksjjWyQJCQm899577Ny5E4vFQtu2bRk7dizVq1d3d2g3TFFV9NUiS2yIrxBClCT331MpgMViYeDAgRw6dIjXX3+dKVOmkJCQwGOPPUZqaskNmRVCCJE/j26RbN++nbi4ONauXUvjxo0BqFOnDvfccw9btmyhV69ebo6wbJs+fY67QxBCeACPbpG0a9eO5cuXu5II4JosZrVa3RWWEEKIf/DoFomfnx8tW2bPI7DZbPz5559MmjSJwMBA7r333ls6p6Jc7XjLi9msw253uDq3PUd2PDqdm8MQ+VJVpcCfLeE+en32L468P7fmekv/uC2R2O12Nm3KPZ/gitDQUGJirg7JHDZsGNu3b0dVVSZMmOCqgSSEEMK93Db8Nz09nRYtWuS7PyoqiiVLlrge79u3D6vVyoYNG/j888+ZOHEiPXv2vOnrumP4b1HwxOG/4ioZ/uvZZPhv4Vxv+G+pnEfyxBNPcOHCBbZs2XLTz5VEIoqDJBLPJomkcK6XSDy6s/3w4cN53v5q1KgRCQkJbohICCHEtTw6kezevZtRo0YRH391dTqHw8Hu3bupW7euGyMTRaUUNoiFENfw6ETSs2dPwsPDGTx4MF999RU7duxg0KBB/P7777zwwgvuDq/UGTr0GZ5//rkb3t+uXSsWLpxbbPFs2rSB6dOnFcm55s2bzV13tSmScwkhbo5HD/8NDAxk6dKlTJ48mbfffpv09HSaNm3KokWLaNWqlbvDu+2MGvVSjvVAitvixfNdJeALq1u3HrRtK4UXhXAHj04kAJUrV2bq1KnuDqNQnJqTw8lx/HR+P2ZbOv4GE1EVW9AwpB6q4jmNwpo1I9wdwi2rUCGMChU8a4CEEGWFxyeS0s5sTWNG7DxOm8+ioKChoaCwLyGWqv6VGRI5AH8vP3eHCeRdzTctLY033niZnTt/wGTyo0uXbgwY8Cx6/dUfnQ0bvmD16uWcPXuG0NDyPPhgTx57rL+rdTNhwpskJSVSsWIltm3bSs2atUhMTODChfOuEvNr1mwgPLwS+/fvZcmSBRw5cpisrEzKlw+jS5eu9O8/AFVV+euvc/Tq9SDDh7/AF198RkpKCqNGjeXkyRMsXjyf777bA2T3pS1fvpitWzdz9uxZVFWhTp16PP30YNdaKfPmzebbb7fy3HPDmTNnJqdPx1OxYjhPPjmQ++/vUoLfeSFKN0kkxcipOZkRO48z5nMAaH8vbnXl3zPmc8yInceYVsM8qmXyT2vWrKBduzsZP34ScXFHWLDgU2w2G0OHjgBgyZIFzJkzk969+9KmzR0cOfIb8+bN4vLlSwwbNtJ1nv3799KyZWv++9/JZGVlUb58eV56aRS1atWmf/+BhISEEhd3lJEjh9Cp032MHz8Rp1Nj69bNzJs3m2rVanDPPVerGcyePYNRo17Cx8eXZs2ac/LkiRxxz5z5IRs2fMGgQcOIiKhFYmIiCxd+yuuvv8Rnn210LSGcmJjAtGmTefLJgYSFVWTFiiW8884bNGzYmKpVq5XAd1iI0k8SSTE6nBzHafPZfPdraJw2n+VwchyNQxuUYGQ3rmbNWrzzznsoikJ0dAyZmZl89tlKnnjiKVRVx6JF8+jZsxfDhmUPfoiKaouvr5EZM6bRq1df12qKDoeDF198Jcd67waDgcDAIBo3zl4h8vjxY7RpE824cW+7WjOtW7dh587vOXBgf45E0rHjvXTp0i3fuJOSEnn22SE89FBv1zZvby9efXUMJ078SYMGjYDs1REnTZrqaqVUrVqdhx/uyq5dOyWRCHGDJJEUo5/O73fdzsqPgsLPF37x2ERy990dc3TAt29/F8uWLeLPP49hsVjIysqiXbs7sdvtrmNiYtrz0UdT2L//Z9eHva+vMUcSyUvnzl3p3LkrFouF06fjOXv2NL//HofD4cBut+U4NiKidoHneuutiQBcunSJ+PhTnDkT71rT3WbLea4mTa6uE3Ol9E5WlkxcE+JGSSIpRmZbeoFJBLJbJWZr/jPt3S04OCTH4ytL3yYlJbrmgIwcOTTP5yYlJf7jPNdfMtdiyWLq1PfZsuVL7HY74eGVaNKkKTqdPtd8k+ud7+jRw0yZ8i5HjhzGx8eHmjUjCAvLbh3981Q6nc5VURpA/XvFSqfTed14hRDZJJEUI3+D6YZaJJ7S2Z4XsznnAmLJyUlA9tBsqzX7L/u33vovlStXyfXc0NDyN3WtadOmsGPHNsaPf5eWLaPw9c0ua9G1681Vek5PT2PUqGHUrl2PJUtWU716DVRVZdeu/2PHjm03da7SSKdTcWiAqqBpGnpFwWF3uDsscRvzzB7e20RUxRY31CJpHda8hCK6eXv27MrxePv2b/H29qZBg8Y0atQEg8FAcnIS9es3dH3Z7XZmz55BUlJSgedWr1mv/tChA7RqFUW7dne5ksjRo0e4fPnSTbUQTp06SUpKCn369KNmzQjXdXbv/hEATbt9WxuKTuXsxUzeW76PARO+ZvgH3/HFD8dBr/PApRHE7UJaJMWoYUg9qvpX5oz5XJ4JRUGhin8lGobUK7GYEhLOs3r18lzb69TJO4bffjvE5MkT6dChE/v372Xt2lU89dTT+Pllt6IeeeQxZs+eQVpaGpGRzTl//i/mzJmJn5/fdeel+Pn58/vvcfzyyz4aNmxEgwaN2L79G9av/5xq1apz7NgfLFo0D0VRyMrKuuHXWK1aDUwmEwsXzkVRQFV17NixjU2b1gPZHey3I51O5eCJi0xZvt+1LT3Txrrv/mTPb+f57+A7wCEtE1H0JJEUI1VRGRI5IM95JBoaVfwrMSRyQIkO/T19Op6PPvog1/ZevfrmefyTTz7N4cOHePHFEQQGBjJo0DD69Xvctf+ZZ54jJCSEL774jCVLFhAQUI42baJ59tkheHt7FxhL//7/YdKkCYwaNYwPP/yEYcNGYrfbmTNnBlarjUqVKtG//wBOnPiT3bt/vOFWiZ+fHxMnTmHmzI8YN24sRqOJOnXqMX36HEaPfp6DBw8QHX37zYJ3KAqzvjiU576/ktL54cA5OjSrhM0myUQUrVJZRr4w3FFG/srM9p8v/ILZmoa/lx+tw5rf1Mx2KSPv2dxdRl5RICnNxosf/5DvMdUq+vP6f9qglsGBBFJGvnCuV0ZeWiQlQFVUGoc28NghvuJ2oGCzF5wgbHZnziFrQhQRSSRC3AY0TSMs2Ihep2J35J1QohqGYdApOOxFn0x8ffXo9DrsdifeXiopKZYiv4bwXJJIhLhNqIrGg+0j+HzHsVz7fL31dGsXgeM6rZZbuq5e5VxyJl/uOkl6po2mtUNp2zgck4+O9DRrkV9PeB5JJELcJjS7kwfb18Too+eLHcdIz8quNlC3WhDDekWiV6Co04jOS8eiL4+ybe9p17bdv55n5de/89/nYqgY5Etq6o2PuBOlkyQSIW4jTpuDe1tVpUPLqlhtDvR6FZ0COsCRzy2vW1WunA/74hJzJJErUtOtvLvoZ8Y/E12k1xSeSSYkXkNVVTRNhkeKG6dpGg6HI9cES3dx2B0oDgfeKuicTnA4izyJAJjTraz77s98959JSCMty5bvfnH78IyffA9iMBiw222kp6de/2BR5mmak7S0FBwOOyaTyd3hlCi7UyM5peDbVpfMFnx8dCUUkXAXubV1DZOpHDabDbP5EpmZaSiKZ/wSXPljtwxOAfBYmubE4bCjaU4CAgLw9w/AbC47o5UMepUqFfy4cDEj32MqBPqSlSUt/NudtEiuoSgKgYGh+PmVQ6czXP8JJUSv16HXe0ZSE9l0Oh0+PkaCg8MID6/kMbe2SoqPQUfvTnXz3d8oIgRvQ9n6npRV0iLJg6Io+PkFujuMHGRmrvA06elWKgb7MvDBRszfeBin8+r8lOoV/XmhXwt8vRQyimHIsfAskkiEELfMYXXQvlk4bZuEs/fIBcwZVprWKk+FYF+MXjrS02UeSVkgiUQIUSgOqxMVuL9Ntb8rNdvIyLCRLsUhywxJJEKIInHpktx2LaukJ0wIIUShSCIRQghRKGVuPRJN00plJW3l76UASmPsZYG8P55N3p/CUZTs0az57i9riUQIIUTRkltbQgghCkUSiRBCiEKRRCKEEKJQJJEIIYQoFEkkQgghCkUSiRBCiEKRRCKEEKJQJJEIIYQoFEkkQgghCkUSiRBCiEKRRCKEEKJQJJEIIYQoFEkkpVBiYiLjxo2jQ4cONG/enJ49e7J582Z3h1Vmbdy4kQceeICmTZvSuXNn1q1b5+6QxN+cTicrVqygW7duNG/enE6dOjFx4kTS0tLcHdptRVZILGWsVisDBw7EbDYzfPhwKlSowJYtWxgxYgQOh4OuXbu6O8QyZfPmzYwePZonnniC9u3b88033zB27Fh8fHz417/+5e7wyry5c+cybdo0BgwYQHR0NCdOnOCjjz7i2LFjzJs3z93h3TakjHwp88033zBkyBDWrFlD06ZNXdsHDhxIYmIi69evd2N0Zc+9995L48aNmTp1qmvbiBEjiIuLk1aim2maRps2bXjggQd44403XNu//PJLRo4cybp162jQoIEbI7x9yK2tUsZkMtGnTx+aNGmSY3tERATx8fFuiqpsOn36NPHx8dx33305tt9///0cP36c06dPuykyAZCens6DDz6Yq5UeEREBIL8vRUhubZUy0dHRREdH59hms9n47rvvqFOnjpuiKpuOHz8OQM2aNXNsr169OgAnTpygatWqJR6XyObn58e4ceNybf/mm28AqF27dkmHdNuSROJB7HY7mzZtynd/aGgoMTExubZPnjyZkydPMmPGjOIMT1zDbDYD2R9Y/2QymQCkQ9cDxcbGMmfOHDp16kStWrXcHc5tQxKJB7FYLIwZMybf/VFRUTkSiaZpvP/++yxcuJABAwbQqVOnkghT/O1K9+K1a1lf2a6qcufYk+zbt49BgwZRpUoV3nnnHXeHc1uRROJBTCYTcXFxN3Ss1WrlpZdeYtOmTQwYMKDABCSKh7+/P5C75ZGenp5jv3C/L7/8kpdeeokaNWowd+5cgoKC3B3SbUX+ZCqF0tLSeOqpp9i8eTOvvPKKJBE3udI3cm2n7alTp3LsF+61YMECXnjhBZo1a8ayZcuoUKGCu0O67UgiKWUcDgeDBw8mNjaWDz74gP79+7s7pDKrevXqVKlSha+++irH9q1bt1KjRg0qVarkpsjEFWvWrOHdd9+lc+fOzJ07V1qJxURubZUyK1eu5KeffqJPnz6Eh4dz4MAB1z5FUYiMjHRjdGXPkCFDePnllylXrhx3330327ZtY/PmzTnmlQj3SE5OZsKECVSuXJlHH32Uw4cP59hfrVo1goOD3RTd7UUmJJYyTzzxBHv27Mlzn06ny/XLIorfypUrmT9/Pn/99RdVq1blmWeeoUePHu4Oq8xbt24dY8eOzXf/e++9R/fu3UswotuXJBIhhBCFIn0kQgghCkUSiRBCiEKRRCKEEKJQJJEIIYQoFEkkQgghCkUSiRBCiEKRRCJEKTJu3Dgef/xxd4chRA6SSIQoJdasWcOaNWvcHYYQuUiJFCE8nMPh4JNPPmH69OnuDkWIPEkiEcKDWSwWevXqRVxcHD169GDXrl3uDkmIXCSRCFEMOnbsSHR0NM2aNWPWrFkkJydTv359RowYQdu2bV3HxcbGMn36dA4cOICqqkRGRjJq1Cjq1asHZCeStLQ0pk6dSpcuXejYsaO7XpIQ+ZJaW0IUg44dO6JpGklJSTz++OOUL1+eFStWcO7cOebPn09UVBR79+7lySefpEKFCvTu3RsfHx8WL15Meno6a9eupUqVKjidTpxOJ3q93nXeypUrs2TJEje/QiGukhaJEMXk3LlzzJgxw7UEcvfu3bn//vuZMmUKq1atYtKkSQQGBrJ27VrXin133XUXXbp0Yfny5YwZMwZVVWXJXuHxJJEIUUwiIiJcSQQgODiY7t27s3TpUpKTkzl06BBPPfVUjmVfa9asydq1awkPD3dHyELcEkkkQhST2rVr59pWvXp1NE3j7NmzaJpG9erVcx3TsGHDkghPiCIjbWYhionBYMi1zeFwAGC32wHktpW4LchPsRDFJD4+Pte2U6dOodPpqFy5suvxtd5//33mzJlT7PEJUVQkkQhRTA4dOsSBAwdcj5OSktiwYQNt27YlLCyM+vXrs2nTJtLS0lzHnD59msWLF5OUlOSOkIW4JdJHIkQx8fLy4umnn6Z///74+PiwfPlynE4nY8aMAeDll19m4MCBPPTQQ/Tq1QtVVVm6dCkBAQE8/fTTbo5eiBsniUSIYtKsWTMeeOABZs6cidlsplWrVowaNYr69esD0LZtWxYtWsRHH33EjBkz8Pb2pnXr1rz44ouUL1/ezdELceNkQqIQxUAmDoqyRPpIhBBCFIokEiGEEIUiiUQIIUShSB+JEEKIQpEWiRBCiEKRRCKEEKJQJJEIIYQoFEkkQgghCkUSiRBCiEKRRCKEEKJQ/h/N7NcAaiBx7wAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "legs = pd.read_csv('legislators.csv')\n",
    "\n",
    "vote2d = pd.DataFrame({\n",
    "    'member': df.index,\n",
    "    'pc1': pcs[:, 0],\n",
    "    'pc2': pcs[:, 1]\n",
    "}).merge(legs, left_on='member', right_on='leg_id')\n",
    "sns.scatterplot(data = vote2d,\n",
    "                x=\"pc1\", y=\"pc2\", hue=\"party\",\n",
    "                hue_order=['Democrat', 'Republican', 'Libertarian']);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Note that PCA did not use the party affiliations for its approximation, only the votes. Even though no two legislators voted the exact same way, the votes within party members was similar enough to create two distinct clusters using PCA. In real-world scenarios, we might not know ahead of time that there are roughly two categories of people in the data. PCA is useful in these scenarios because it can alert us to patterns in data that we hadn't considered before. For example, in this scenario we might also conclude that Democrat party members tend to vote more closely within party lines than Republican party members since the Democrat members cluster more tightly together in the scatter plot."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Examining the First Principal Direction\n",
    "\n",
    "We can also examine the principal directions themselves. The scatter plot of principal components suggest that the first principal direction captures party affiliation – smaller values in the first principal component correspond to Democratic party members while larger values correspond to Republican members.\n",
    "\n",
    "We can plot the magnitude of values in the first principal direction:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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af/+/SorK1P37t0lSaNHj9aePXv0wgsv6IorrvB4vLZt26pjx442hgYAAAA0GWsFdmFhoZ577jl99NFHqqysVFpamqZMmaJOnTq517n33nt19OhRrVu3Tt9++62GDBni9/FGjx6tZ555xsbQAAAAgCZjrcAGAAAAYOkabAAAAABVKLABAAAAiyiwAQAAAIsosAEAAACLKLABAAAAiyiwAQAAAIsosAEAAACLKLABAAAAiyiwAQAAAIsosAEAAACLogM9gHDw9ddfq3PnzmrVqpW77fjx41qwYIH27NmjhIQE9e/fXyNHjlRERIRXvrS0VF999ZXS0tIkSeXl5Xr33Xe1d+9eRUREqF+/frrhhhu8stOmTdOdd96pPn361Gvc5eXlOn36tFq3bu0ex1tvvaX9+/erQ4cOuvPOO93Lajp48KA++eQT5eXl6cyZM2rVqpXatGmj7t27y+VyKTY21m+/x44d05YtW3Tw4EEVFxcrMjJSsbGxSkpKUv/+/XXFFVfUa3tqU1hYqJUrVyo3N1fdunXTiBEjPJ4vScrLy9Mf/vAH/epXv/LKl5WVqby8XJdeeqmkqud3+fLlOnbsmJKTkzVy5Ei1aNGizuMxxmjatGl67LHHdOWVV3otD9U5Vd1XU88r5hRzimMVc+piMKeC81jV0DkVTCKMMSbQgwh111xzjd58802lpqZKkg4dOqR77rlHhYWF6ty5s86ePavc3Fz16NFD8+bN83jR5ubmaty4cSotLdWmTZt09OhRPfjggzp48KASEhJUXl6uoqIi9erVS3PnzlVcXJw763Q6FRMTo1/+8pe6//776zzZysrKlJWVpWXLluncuXO6/vrr9cILL2jcuHHatWuX2rZtq+PHj+uKK67QW2+9pbZt23rkZ8yYoQULFqiyslKS1LJlS7Vt21bHjh1TeXm5WrdurV/84he6++67PXLl5eV67rnn9Mc//lHl5eWKjY2Vw+GQMUanT59WcXGxoqOjddddd2natGmKioqq1/NRU15enn784x/rn//8p+Li4lRYWKgrr7xSs2bNUs+ePd3r/eUvf9GYMWO0e/dujzE/++yzWrZsmSoqKjR8+HBNnDhRd955p44fP674+HidPHlSTqdTCxYs8Hh+8vPz/Y6poqJCN954o/7whz+oW7dukqR27dq5l4fanJICM6+YU//GnGq+xyrm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\n",
      "text/plain": [
       "<Figure size 864x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "votes = df.columns\n",
    "plt.figure(figsize=(12, 4))\n",
    "plt.bar(votes, Vt[0, :], alpha=0.7)\n",
    "plt.xticks(votes, rotation=90);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "For a point to have a large positive value in the first principal component, the legislator needed to vote for bills where the first principal direction contains positive values, and vote against bills where the direction contains negative values.\n",
    "\n",
    "This implies that we might label bills like 520, 522, and 523 as \"Republican\" bills and bills like 517 and 518 as \"Democratic\" bills. To verify this, we can inspect the votes of the legislators with the largest values in the first principal component:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>member</th>\n",
       "      <th>pc1</th>\n",
       "      <th>pc2</th>\n",
       "      <th>leg_id</th>\n",
       "      <th>...</th>\n",
       "      <th>state</th>\n",
       "      <th>chamber</th>\n",
       "      <th>party</th>\n",
       "      <th>birthday</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>134</th>\n",
       "      <td>G000552</td>\n",
       "      <td>3.24</td>\n",
       "      <td>-0.70</td>\n",
       "      <td>G000552</td>\n",
       "      <td>...</td>\n",
       "      <td>TX</td>\n",
       "      <td>rep</td>\n",
       "      <td>Republican</td>\n",
       "      <td>1953-08-18</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>39</th>\n",
       "      <td>B001302</td>\n",
       "      <td>3.24</td>\n",
       "      <td>-0.70</td>\n",
       "      <td>B001302</td>\n",
       "      <td>...</td>\n",
       "      <td>AZ</td>\n",
       "      <td>rep</td>\n",
       "      <td>Republican</td>\n",
       "      <td>1958-11-07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>334</th>\n",
       "      <td>R000614</td>\n",
       "      <td>3.23</td>\n",
       "      <td>-0.48</td>\n",
       "      <td>R000614</td>\n",
       "      <td>...</td>\n",
       "      <td>TX</td>\n",
       "      <td>rep</td>\n",
       "      <td>Republican</td>\n",
       "      <td>1972-08-07</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>3 rows × 11 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "      member   pc1   pc2   leg_id  ... state chamber       party    birthday\n",
       "134  G000552  3.24 -0.70  G000552  ...    TX     rep  Republican  1953-08-18\n",
       "39   B001302  3.24 -0.70  B001302  ...    AZ     rep  Republican  1958-11-07\n",
       "334  R000614  3.23 -0.48  R000614  ...    TX     rep  Republican  1972-08-07\n",
       "\n",
       "[3 rows x 11 columns]"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "vote2d.sort_values('pc1', ascending=False).head(3)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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n+93Bnr//v3Vbg8AAACEg1qb59jYWLVv397vns7r169Xhw4d1LZtW7/MJZdcosOHD+utt97yjhUUFGjXrl3q379/I5QNAAAANL2I+++///7aNoqKitLTTz+tH3/8UTabTfPmzdPKlSv197//XV26dFFBQYE+//xzOZ1OtWzZUu3atdPOnTu1ePFinXXWWfr222+VmZkpY4ymTJmiVq1aNcGhAQAAAI2r1lvVVXr55Zc1d+5cHThwQDExMbrttts0atQoSdKKFSuUkZGh+fPnq2/fvpKkwsJCPfzww9qwYYMqKirUq1cvpaenq2PHjoE7GgAAACCALDfPAAAAQHPHfeMAAAAAi2ieAQAAAItongEAAACLaJ4BAAAAi2ieAQAAAItongEAAACLaJ4BAAAAi2ieAQAAAIsig11AKPv000/VqVMnn7cTP3TokBYsWKC9e/eqdevW6tu3r6688krZbDa/fGlpqT755BP16tVLkuTxePTvf/9bn3/+uWw2m3r37q3LLrvML5uZmalrr71WPXv2rHftHo9HR44c0ZlnnumtZdmyZfryyy/Vvn17XXvttd7Hqtq3b5+2bt2q/Px8HT16VK1atdJZZ52lCy+8UImJiXI6nSfd73fffaft27dr3759Ki4ult1ul9PpVFxcnPr27avzzjuv3sdUncLCQq1evVput1vnn3++Ro4c6ff27/n5+Xruuef04IMP+uXLysrk8Xh0xhlnSDr+9V2+fLm+++47xcfH68orr1TLli0t12OMUWZmpu644w61bdvW73HWVOivKSm81hVrijV1qrxWsabqprmtqVDCOwzW4IILLtArr7yihIQESVJeXp5uuOEGFRYWqlOnTvr555/ldrvVtWtXzZkzx+cb0u12a9y4cSotLdWWLVv0zTff6JZbbtG+ffvUunVreTweFRUVqUePHnrhhRcUFRXlzbpcLrVo0UL33HOPbrzxxjotorKyMk2bNk1Lly5VeXm5BgwYoMcee0zjxo3T7t271aZNGx06dEjnnXeeli1bpjZt2vjkp06dqgULFqiiokKSdNppp6lNmzb67rvv5PF4dOaZZ+quu+7S9ddf75PzeDx6+OGH9fLLL8vj8cjpdMrhcMgYoyNHjqi4uFiRkZEaPXq0MjMzFRERUeevR1X5+fn64x//qB9++EFRUVEqLCxU27ZtNXPmTHXv3t273UcffaQxY8Zoz549PvVOmTJFS5cu1bFjxzRixAhNnDhR1157rQ4dOqTo6Gj99NNPcrlcWrBggc/X5+DBgyet6dixY7r88sv13HPP6fzzz5cknXvuud7HWVOhvaak8FtXrCnW1KnyWsWasq65ramQY3BS8fHx5qOPPvJ+fuutt5qUlBTjdru9Y5988olJSkoyf//7332yt99+uxk+fLjZs2ePN3vZZZeZTz/91LvNu+++a5KTk01mZqbffu+55x7TtWtXM2rUKPPuu+9arnnGjBnmoosuMjNnzjRZWVlm0KBBZtSoUWbw4MEmNzfXGGPM/v37TUpKit9+s7KyTP/+/c3mzZvNkSNHzN69e821115rXnrpJVNRUWE+++wzM3nyZONyuczq1at9stOnTzfdu3c3ixcvNocOHfKr69ChQ2bRokWme/fuZsaMGT6PrVmzpk7/Kt1xxx1mxIgR5uDBg8YYY3bs2GFSUlLMxRdfbD744APvdh9++KFxuVw++5w1a5bp2bOnmTVrlnn66adNYmKiGTJkiBk2bJj5+uuvjTHHv7bJycl+X9v4+HjjcrlO+q/q41WzrKnQXVPGhN+6Yk2xpk6V1yrWFGvqZGsq1NA816DqF7p79+7m3//+t992S5YsMf379/cZ69Onj3n99de9n3fr1s28+uqrftlVq1aZvn37Vrvf3bt3m2uuuca4XC5zww03mDfffNN4PJ4aa7788svNwoULvZ9//PHHJj4+3u8bftWqVWbQoEE+YykpKWbJkiU+Y3v27DG9e/c2paWl3rEHH3zQjBw50me7Sy65xMybN6/G2owxZu7cuWbAgAE+Y5dddpnPN15N/078ZkxKSjI5OTk+z1VQUGBGjBhhEhMTzZdffmmMqf7FY9CgQWbRokXez1977TXjcrn8nm/JkiUmKSnJZywrK8v06NHDDBw40CxatMisWLHC+2/p0qUmPj7ezJo1yzt2ItZUaK8pY8JvXbGmWFPGnBqvVawp1lTlfquuqVDDNc91cMYZZ1R73VK7du109OhRnzFjjOz2///3mFFRUdVeL3XmmWeqrKys2v11795dS5cu1bp16zRnzhz9z//8j1q3bq0hQ4bo4osvVufOnRUdHa2YmBhvpqCgQHFxcd7PKx+rWve5556rH374wWfswIEDftcptWvXTkVFRcrPz1enTp0kSYMHD9by5ct9tisuLlbHjh2rPY4TxcXF6ccff/QZW7NmjW6//XZ98cUXeuGFF9S6detan0c6/mu6008/3WesdevWmjNnjkaPHq1bb71VS5YsqTb7448/+sxT//79ZYzRWWed5bNd+/btVVJS4jN24403asCAAUpPT1dWVpamTJmi3r17Szr+a6v77rtPgwYNUteuXWs9BtZUaK0pKfzXFWuKNVUpXF+rWFO1a25rKtRwt41avPrqq9q+fbu+//57DR48WDk5OX7bLF++XJ07d/YZ69+/v5544gkVFhZKkq6++mrNmTPH54WiqKhITz31lGHIL5YAAAwuSURBVHfhnczw4cO1YsUKLV68WCNHjtSOHTuUnp6ua665RikpKT7bnn/++Zo/f753Py+88ILsdrs2btzos92GDRt8vnmk4wt2zZo1PmNvvvmm7Ha7zwLfunWr3wtNt27dtGjRInk8npMeh8fj0YsvvqgLLrjAZ9zhcOipp55SdHS05s+fr3bt2tX4r1J8fLzfC5kknXPOOXrmmWd0+PBh3XzzzdVeo9WlSxetXr3a+7nT6dQ777yjbt26+Wy3du1adenSxS/foUMHLV68WNdcc43GjRunf/7znyotLT3psZ+INRW6a0oKz3XFmmJNnYqvVawp1lTICt5J79B34403mt/97nfeX5l0797duFwus2PHDmPM8Wu2rr76auNyucwbb7zhk/3mm2/MgAEDTGJiorn//vvNvHnzzCWXXGIGDhxoJk+ebCZOnGgSExNN7969zRdffOGTrfqrjer89NNPZufOnX6/CnvnnXdMt27dTM+ePU1iYqLp1auXWbRokYmPjzcZGRlmyZIl5t577zUul8usXLnSJ/vyyy+b+Ph4M378ePPSSy+Zxx9/3Fx00UXm3nvvNcYY88EHH5gbbrih2uu+du/ebXr16mUGDRpk/vGPf5gFCxaYlStXmpUrV5qFCxeaf/7zn2bw4MEmISHB7Nq1q9pj2rp1q3G5XOY///lPjcde6a233jIXXnihGTlypFm+fLnf4zt27DAXXXSR6datm9+vrbZs2eK9ru6rr77yy3788cfmT3/6U7Vf26q++OILk5aWZoYMGWLefvtt43K5zCeffFLttqyp0F5TxoTfumJNsaZOldcq1hRr6mRrKtTQPFtw8OBBs2nTJvPss8+aiRMnehf4qlWrzO9//3uzfv36anNFRUVm5syZZsSIEaZr164+1y/169fP3HvvvWb//v1+OSsvIDX54osvzOOPP26mTp3qfWF69tlnzUUXXWTi4+NNYmKiefHFF6vNPv/886ZPnz4mPj7eJCQkmPvuu8+UlJQYY4x58803za233mo2b95cbXb//v0mMzPTDBw40O96rUsvvdRkZGRU+43aEO+9957585//bJ599tlqH9+zZ4/3m7GqnTt3mvHjx5tvv/3W77GcnBwzYsQIv2vATsbj8ZhZs2Z5X6hO9uJRiTUVumvKmPBcV6wp1pQVofxaxZqqm+a2pkIJt6prIh6PR4cPH1Z5ebkcDkeN94sMlGPHjqmgoEBt2rTxuR6tqoqKCh06dKjW7Wry888/q6ioSMYYOZ1O730kg+XAgQP6zW9+E/D9fPbZZ9q4caNGjx6tX//61wHdF2squGtKarp1tWfPHr3xxhsBX1esqeazpprTaxVr6tR6nQoFEffff//9wS6iObDb7Tr99NPldDrrdNPxxq7B4XDUeu9Mm81mabuqysvLtWnTJm3ZskWlpaVyuVxyOBxq0aKFd5uDBw9q4cKFfte5nZgtLi7Wb3/7W7/nry5rNbdq1apG22dN2V//+tdKTEyUw+GwlC0pKan3fo8ePar4+Hi/NdXYc1xT9sQ1VVN28+bN2rVrl44cOVKn/Z4oMjLSu542btyobdu26ejRoz5/NFSbsrIyvfbaa9q2bdtJa7GSrdzvifc/rWu2Lvt9//33vddyWq25PvusfJ1q2bKl3nzzzaDM8euvv64PPvhAP//8c437rfo6VZ/jrVxTDodDkZGRmj17tuLi4uRwOCzXLB3/A7nGylpdUw3d769+9Su9++676tatW8CP98T//7Vo0aJeNTfkWG02m+bNm6eOHTvWmK3u/3217fenn35Sy5YtvZnIyEi1aNFCr732mtauXauPP/5Ydru92jcNqZqVjq/jFStWaOXKldq9e3ejZKuuqUDtd+vWrWrVqpWcTqffNdoN3W/ICc4Jb5xqDh06ZEaOHOlzW52rr77a5Ofn+2xX3W1z6psNxj7JNl3WGGNeeOEFM3DgQNOvXz/zr3/9yxQWFpphw4b5PN+4ceN8bifVHLPhVm8wsyfj8XiMy+XyuRcx2dDJhmq9LpfL51KT77//3rsWe/fubXr06GFcLpf5y1/+4rceyVrPhhpuVVeD999/v07bX3zxxc02++ijj6qoqEhLlixRx44d9frrr+uRRx7R9ddfr/nz56tDhw4nfZ76ZoOxT7JNl12wYIGmT5+ukSNHKjIyUnPmzNG2bdtUXFyshQsX6sILL9S2bdv0v//7v3ryySd19913N8tsuNUbzGzXrl1r/I2aMUZ/+MMfvJ9/8sknZJswG271Vj52oilTpqiwsFCLFy/2/j9yw4YNSk9P91uPZK1nQw3Ncw3Gjx+v4uJiSce/6Cf75qp87MS3v2xu2bffflt33XWX9203r7rqKvXq1Utjx47VzTffrFdeeeWk10DVNxuMfZJtuuyiRYt055136rbbbpMkJSQk6P/+7/80depU7+UdKSkp+vbbb/Xiiy/6vNA2p2y41RvM7B//+EctXLhQ5557rq666iqf61qPHTump59+WmlpaTrnnHNUFdnAZ8Ot3uq8+eabyszM9Dm5NHjwYP3lL39RVlZWjQ0hWevZoGuqU9zh6L///a8ZMWKE6du3r9m0aZPZsWNHjf+ac7Znz55m+/btfnP45ZdfmsTERHPllVea4uLian89X99sMPZJtumyPXr0MG+//bb3859++snEx8ebnTt3+mz39ttvmx49ejTbbLjVG8ysMcfvMjB48GBz3XXXmby8PO+4x+Mx8fHxNd4pgGzgs+FWb9U7hPTu3bvaW9K99dZb5qKLLiJbz2yo4U1SanDuuedqzpw5ioyM1Pbt25WYmFjjv+acrfyVfFWdOnXSE088oa+++kp//vOfdeTIEb9t6psNxj7JNl02JiZGW7Zs8X4eHR2t5cuX+72b1/bt2xUbG9tss+FWbzCzktSnTx+tWbNGXbp00ahRo5SVleW3zcmQDXw23OqVpHfffVd5eXkyxigpKUk7duzw2+aNN96o9o9nyVrPhpRgdu7hYt26daZr167mm2++IXsSr776qvcm89Xd3LzyORMTE/3OMNY3G4x9km267OrVq018fLy5/fbb/f7A0BhjcnNzTXp6unG5XGbZsmXNNhtu9QYzW9W2bdvMwIEDzXXXXWe+/PLLWs9Okm3abDjUO3jwYONyuYzL5TI9evQwl156qenatav3DOuePXvMHXfcUe16JGs9G2poni36+uuvvTdMJ1u9devWmSuvvNJMmzat2se3bNlikpOTq72rQn2zwdgn2abLrlmzxowYMcLn16iV1q5da/r06WPmzJlT7fM2p2y41RvMbFWHDx826enpJiEhwdIbPJBt2mw41FtSUmLef/99s2jRIvO3v/3N/OEPfzC7d+82xhizfPlyk5iYaObNm0e2gdlQwpuk1MPbb7+tvXv3qnXr1urVq1ed7oHa3LPnnnuudu/eXeP9fBuaDcY+yTZ99owzzlDfvn1rvGNHc86GW73Bzn744YdatmyZsrKy6vwaRzaw2XCrtzK7d+9enXbaaerfv3+91jLZEBbs7j2U9ezZ03z88cfez4uLi73v9155P9GuXbuaqVOnkg1CNtzqJUuW7wOyZFnLZOueDTU0zzWo+pehf/vb38zFF19s1qxZYw4fPmy+++47M2/ePNOtWzfz/PPPk23ibLjVS5Ys3wdkybKWydY9G2ponmtQ9Qvdp0+faq/FmTVrlhkyZAjZJs6GW71kyQYiG271kiV7smy41Uu26bKhhlvV1UF5ebm6devmN96rVy8dPHiQbJCz4VYvWbKByIZbvWTJhtI+yYZHNthonmuRl5en0tJSSce/oJ9//rnfNu+9957atWtHNgjZcKuXLNlAZMOtXrJkT5YNt3rJNl02lHC3jRokJCSorKxMERERiomJUYsWLfT1119ryZIl6tKli/Lz87V48WItWLBAEydO1Lhx48g2YTbc6iVLlu8DsmRZy2Trng01kcEuIJR98MEH2rdvn/bu3as9e/Zo7969+vHHH1VYWChJeuedd/Tiiy/q+uuv10033US2ibPhVi9ZsnwfkCXLWiZb92yo4cxzAxQUFMhms6l169ZkQzAbbvWSJRuIbLjVS5ZsKO2TbHhkmxrNMwAAAGARfzAIAAAAWETzDAAAAFhE8wwAAABYRPMMAAAAWPT/AFoN7b4gyJMQAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 864x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "mem = 'G000552'\n",
    "plt.figure(figsize=(12, 4))\n",
    "plt.bar(votes, df.loc[mem], alpha=0.7)\n",
    "plt.xticks(votes, rotation=90);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Indeed, this legislator voted for bills 520, 522, and 523; they also voted against bills 517 and 518."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Summary\n",
    "\n",
    "This chapter introduced the idea of dimensionality reduction which enables us to explore and analyze data that have many columns. We specifically introduced principal component analysis, one common and useful method for dimensionality reduction based on the singular value decomposition. We discussed the procedure for performing PCA, scenarios where PCA is appropriate, and how to use PCA to search for patterns in data."
   ]
  }
 ],
 "metadata": {
  "celltoolbar": "Tags",
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
